diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-02-12 17:25:54 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-02-12 17:25:54 +0300 |
commit | c8c86aa6a12a253680aa266ce1c5d51b1b39005a (patch) | |
tree | dfb97a6b2de546860e5c1aa1e701e735f0a666f6 /source/blender/blenkernel | |
parent | 6e47ffcc0d076596429b49cb283757b1952f7b86 (diff) |
- 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.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/exotic.c | 8 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/softbody.c | 4 |
2 files changed, 8 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c index 641313b564c..ba36a826afe 100644 --- a/source/blender/blenkernel/intern/exotic.c +++ b/source/blender/blenkernel/intern/exotic.c @@ -364,10 +364,16 @@ static void read_stl_mesh_ascii(Scene *scene, const char *str) * 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 diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index 3704792d9d4..19f7884b4cf 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -1647,9 +1647,7 @@ static void scan_for_ext_spring_forces(Scene *scene, Object *ob, float timenow) 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); } |