diff options
Diffstat (limited to 'source/blender/blenkernel/intern/library_remap.c')
-rw-r--r-- | source/blender/blenkernel/intern/library_remap.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/library_remap.c b/source/blender/blenkernel/intern/library_remap.c index 458d723c95a..70f3c6d6cf6 100644 --- a/source/blender/blenkernel/intern/library_remap.c +++ b/source/blender/blenkernel/intern/library_remap.c @@ -679,13 +679,19 @@ void BKE_libblock_relink_to_newid(ID *id) void BKE_libblock_free_data(ID *id, const bool do_id_user) { + /* NOTE: We set pointers to NULL so subsequent call of this function doesn't + * cause double-free. + * This is mainly to prevent crazy behavior of ntreeFreeTree() which does + * call BKE_libblock_free_data() for nodetrees outside of bmain. */ if (id->properties) { IDP_FreeProperty_ex(id->properties, do_id_user); MEM_freeN(id->properties); + id->properties = NULL; } if (id->override_static) { BKE_override_static_free(&id->override_static); + id->override_static = NULL; } /* XXX TODO remove animdata handling from each type's freeing func, and do it here, like for copy! */ |