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)

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to