diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-08-11 09:56:11 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-08-11 10:10:02 +0300 |
commit | cbc671947a3baca3da7d6c5a2980a86b7f6a7055 (patch) | |
tree | 781971b3ec1505893474f0c51fbe6d8c8feaec8a /source/blender/blenkernel/intern/material.c | |
parent | 18fbcaf7b9273cc4a7e153fea60a53fec956d600 (diff) |
Fix T88033: Python reference memory leaks for non main data-blocks
ID data-blocks that could be accessed from Python and weren't freed
using BKE_id_free_ex did not release the Python reference count.
Add BKE_libblock_free_data_py function to clear the Python reference
in this case.
Add asserts to ensure no Python reference is held in situations
when ID's are copied for internal use (not exposed through the RNA API),
to ensure these kinds of leaks don't go by unnoticed again.
Diffstat (limited to 'source/blender/blenkernel/intern/material.c')
-rw-r--r-- | source/blender/blenkernel/intern/material.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 4f0b2a718ed..ca57038f1c4 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -1802,6 +1802,7 @@ void BKE_material_copybuf_free(void) { if (matcopybuf.nodetree) { ntreeFreeLocalTree(matcopybuf.nodetree); + BLI_assert(!matcopybuf.nodetree->id.py_instance); /* Or call #BKE_libblock_free_data_py. */ MEM_freeN(matcopybuf.nodetree); matcopybuf.nodetree = NULL; } |