[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51009] trunk/blender/source/blender: freeing node trees no longer decreases their user counts, this cause causing invalid memory access when freeing the blend file.
Campbell Barton
ideasman42 at gmail.com
Tue Oct 2 15:59:05 CEST 2012
Revision: 51009
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51009
Author: campbellbarton
Date: 2012-10-02 13:59:05 +0000 (Tue, 02 Oct 2012)
Log Message:
-----------
freeing node trees no longer decreases their user counts, this cause causing invalid memory access when freeing the blend file.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/node.c
trunk/blender/source/blender/compositor/operations/COM_ZCombineOperation.cpp
Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c 2012-10-02 13:24:28 UTC (rev 51008)
+++ trunk/blender/source/blender/blenkernel/intern/node.c 2012-10-02 13:59:05 UTC (rev 51009)
@@ -1047,7 +1047,15 @@
/* same as ntreeFreeTree_ex but always manage users */
void ntreeFreeTree(bNodeTree *ntree)
{
+ /* XXX, this is correct, however when freeing the entire database
+ * this ends up accessing freed data which isn't properly unlinking
+ * its self from scene nodes, SO - for now prefer invalid usercounts
+ * on free rather then bad memory access - Campbell */
+#if 0
ntreeFreeTree_ex(ntree, TRUE);
+#else
+ ntreeFreeTree_ex(ntree, FALSE);
+#endif
}
void ntreeFreeCache(bNodeTree *ntree)
Modified: trunk/blender/source/blender/compositor/operations/COM_ZCombineOperation.cpp
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_ZCombineOperation.cpp 2012-10-02 13:24:28 UTC (rev 51008)
+++ trunk/blender/source/blender/compositor/operations/COM_ZCombineOperation.cpp 2012-10-02 13:59:05 UTC (rev 51009)
@@ -79,10 +79,10 @@
}
float fac = color1[3];
float ifac = 1.0f - fac;
- output[0] = fac*color1[0] + ifac * color2[0];
- output[1] = fac*color1[1] + ifac * color2[1];
- output[2] = fac*color1[2] + ifac * color2[2];
- output[3] = MAX2(color1[3], color2[3]);
+ output[0] = fac * color1[0] + ifac * color2[0];
+ output[1] = fac * color1[1] + ifac * color2[1];
+ output[2] = fac * color1[2] + ifac * color2[2];
+ output[3] = max(color1[3], color2[3]);
}
void ZCombineOperation::deinitExecution()
More information about the Bf-blender-cvs
mailing list