Fix T37709: Memory corruption when freeing custom bone shape objects
authorSergey Sharybin <sergey.vfx@gmail.com>
Wed, 25 Dec 2013 10:43:26 +0000 (16:43 +0600)
committerSergey Sharybin <sergey.vfx@gmail.com>
Wed, 25 Dec 2013 10:43:26 +0000 (16:43 +0600)
commit122e2b4bfa0211676042ba8e02570d1dcd2fc40d
tree109eb665c67d559d9f5a815f358f9e4f553c65c1
parentad0a3de3ce7f84486047b11343405072f0972107
Fix T37709: Memory corruption when freeing custom bone shape objects

Summary:
Issue was caused by access to pchan->custom object from channel free
function when freeing all objects from main. Order of objects free
is not defined and such an access might easily end up with access
to freed memory.

We don't need to do user counter stuff when freeing main, so added
an _ex functions with do_id_user flag which is used when freeing main.

We had the same issue with other datablocks, so now it should be
easier to support relevant user counter.

This issue was caused by the fix for T36391, so perhaps that's indeed
high time to do real user counter.

Reviewers: brecht, campbellbarton

Reviewed By: campbellbarton

Maniphest Tasks: T37709

Differential Revision: https://developer.blender.org/D137
source/blender/blenkernel/BKE_action.h
source/blender/blenkernel/BKE_library.h
source/blender/blenkernel/BKE_object.h
source/blender/blenkernel/intern/action.c
source/blender/blenkernel/intern/library.c
source/blender/blenkernel/intern/object.c