diff options
author | Sergej Reich <sergej.reich@googlemail.com> | 2013-01-26 21:38:45 +0400 |
---|---|---|
committer | Sergej Reich <sergej.reich@googlemail.com> | 2013-01-26 21:38:45 +0400 |
commit | c84383301c5a2582e95259a7e4468a23a3566401 (patch) | |
tree | 1dd1df9d9cfb2cf5714f5ed5762f2cb5e2d56160 /source/blender/editors | |
parent | 7e49a39acda5cdc86ce87470f7dc10cd80f1eba7 (diff) |
Fix [#34005] blender will close immediately in debug mode on deleting objects
Was silly mistake from rigidbody merge, base was used after it's been
freed.
Now don't free base in BKE_scene_base_remove() and rename it to
BKE_scene_base_unlink().
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/object/object_add.c | 3 | ||||
-rw-r--r-- | source/blender/editors/object/object_relations.c | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 9c829a06cd2..8457b278c6c 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -941,10 +941,11 @@ static void object_delete_check_glsl_update(Object *ob) void ED_base_object_free_and_unlink(Main *bmain, Scene *scene, Base *base) { DAG_id_type_tag(bmain, ID_OB); - BKE_scene_base_remove(scene, base); + BKE_scene_base_unlink(scene, base); object_delete_check_glsl_update(base->object); BKE_libblock_free_us(&bmain->object, base->object); if (scene->basact == base) scene->basact = NULL; + MEM_freeN(base); } static int object_delete_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 68d7dcafd9c..9749494bc66 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -354,7 +354,8 @@ static int make_proxy_exec(bContext *C, wmOperator *op) /* remove base, leave user count of object, it gets linked in BKE_object_make_proxy */ if (gob == NULL) { - BKE_scene_base_remove(scene, oldbase); + BKE_scene_base_unlink(scene, oldbase); + MEM_freeN(oldbase); } BKE_object_make_proxy(newob, ob, gob); |