[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34797] trunk/blender/source/blender: - fix leak on STL loading if realloc fails.
Campbell Barton
ideasman42 at gmail.com
Sat Feb 12 15:25:55 CET 2011
Revision: 34797
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34797
Author: campbellbarton
Date: 2011-02-12 14:25:54 +0000 (Sat, 12 Feb 2011)
Log Message:
-----------
- fix leak on STL loading if realloc fails.
- transform code was using sprintf reading and writing the same string (undefined behavior).
- softbody had unneeded NULL check.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/exotic.c
trunk/blender/source/blender/blenkernel/intern/softbody.c
trunk/blender/source/blender/editors/transform/transform.c
Modified: trunk/blender/source/blender/blenkernel/intern/exotic.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/exotic.c 2011-02-12 12:53:22 UTC (rev 34796)
+++ trunk/blender/source/blender/blenkernel/intern/exotic.c 2011-02-12 14:25:54 UTC (rev 34797)
@@ -364,10 +364,16 @@
* sure we have enough storage for some more faces
*/
if ( (totface) && ( (totface % 10000) == 0 ) ) {
+ float *vertdata_old= vertdata;
++numtenthousand;
vertdata = realloc(vertdata,
numtenthousand*3*30000*sizeof(float));
- if (!vertdata) { STLALLOCERROR; }
+ if (!vertdata) {
+ if(vertdata_old) {
+ free(vertdata_old);
+ }
+ STLALLOCERROR;
+ }
}
/* Don't read normal, but check line for proper syntax anyway
Modified: trunk/blender/source/blender/blenkernel/intern/softbody.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/softbody.c 2011-02-12 12:53:22 UTC (rev 34796)
+++ trunk/blender/source/blender/blenkernel/intern/softbody.c 2011-02-12 14:25:54 UTC (rev 34797)
@@ -1647,9 +1647,7 @@
ListBase *do_effector = NULL;
do_effector = pdInitEffectors(scene, ob, NULL, sb->effector_weights);
- if (sb){
- _scan_for_ext_spring_forces(scene, ob, timenow, 0, sb->totspring, do_effector);
- }
+ _scan_for_ext_spring_forces(scene, ob, timenow, 0, sb->totspring, do_effector);
pdEndEffectors(&do_effector);
}
Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c 2011-02-12 12:53:22 UTC (rev 34796)
+++ trunk/blender/source/blender/editors/transform/transform.c 2011-02-12 14:25:54 UTC (rev 34797)
@@ -2525,6 +2525,7 @@
static void headerResize(TransInfo *t, float vec[3], char *str) {
char tvec[60];
+ char *spos= str;
if (hasNumInput(&t->num)) {
outputNumInput(&(t->num), tvec);
}
@@ -2537,24 +2538,27 @@
if (t->con.mode & CON_APPLY) {
switch(t->num.idx_max) {
case 0:
- sprintf(str, "Scale: %s%s %s", &tvec[0], t->con.text, t->proptext);
+ spos += sprintf(spos, "Scale: %s%s %s", &tvec[0], t->con.text, t->proptext);
break;
case 1:
- sprintf(str, "Scale: %s : %s%s %s", &tvec[0], &tvec[20], t->con.text, t->proptext);
+ spos += sprintf(spos, "Scale: %s : %s%s %s", &tvec[0], &tvec[20], t->con.text, t->proptext);
break;
case 2:
- sprintf(str, "Scale: %s : %s : %s%s %s", &tvec[0], &tvec[20], &tvec[40], t->con.text, t->proptext);
+ spos += sprintf(spos, "Scale: %s : %s : %s%s %s", &tvec[0], &tvec[20], &tvec[40], t->con.text, t->proptext);
}
}
else {
if (t->flag & T_2D_EDIT)
- sprintf(str, "Scale X: %s Y: %s%s %s", &tvec[0], &tvec[20], t->con.text, t->proptext);
+ spos += sprintf(spos, "Scale X: %s Y: %s%s %s", &tvec[0], &tvec[20], t->con.text, t->proptext);
else
- sprintf(str, "Scale X: %s Y: %s Z: %s%s %s", &tvec[0], &tvec[20], &tvec[40], t->con.text, t->proptext);
+ spos += sprintf(spos, "Scale X: %s Y: %s Z: %s%s %s", &tvec[0], &tvec[20], &tvec[40], t->con.text, t->proptext);
}
- if (t->flag & (T_PROP_EDIT|T_PROP_CONNECTED))
- sprintf(str, "%s Proportional size: %.2f", str, t->prop_size);
+ if (t->flag & (T_PROP_EDIT|T_PROP_CONNECTED)) {
+ spos += sprintf(spos, " Proportional size: %.2f", t->prop_size);
+ }
+
+ (void)spos;
}
#define SIGN(a) (a<-FLT_EPSILON?1:a>FLT_EPSILON?2:3)
More information about the Bf-blender-cvs
mailing list