From a40ccde405211b82eed8259b1afaa43dc41fa6a6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 4 Mar 2021 15:06:15 +1100 Subject: Fix logic for calling PyObject_GC_UnTrack All tracked objects need a matching un-track, also remove redundant Py_XDECREF call. --- source/blender/python/gpu/gpu_py_batch.c | 2 +- source/blender/python/gpu/gpu_py_buffer.c | 3 +-- source/blender/python/intern/bpy_props.c | 6 ++---- 3 files changed, 4 insertions(+), 7 deletions(-) (limited to 'source/blender/python') diff --git a/source/blender/python/gpu/gpu_py_batch.c b/source/blender/python/gpu/gpu_py_batch.c index ef795268158..8e803350b53 100644 --- a/source/blender/python/gpu/gpu_py_batch.c +++ b/source/blender/python/gpu/gpu_py_batch.c @@ -279,8 +279,8 @@ static void pygpu_batch__tp_dealloc(BPyGPUBatch *self) GPU_batch_discard(self->batch); #ifdef USE_GPU_PY_REFERENCES + PyObject_GC_UnTrack(self); if (self->references) { - PyObject_GC_UnTrack(self); pygpu_batch__tp_clear(self); Py_XDECREF(self->references); } diff --git a/source/blender/python/gpu/gpu_py_buffer.c b/source/blender/python/gpu/gpu_py_buffer.c index b89d2c6a69f..420a7873517 100644 --- a/source/blender/python/gpu/gpu_py_buffer.c +++ b/source/blender/python/gpu/gpu_py_buffer.c @@ -202,8 +202,7 @@ static void pygpu_buffer__tp_dealloc(BPyGPUBuffer *self) { if (self->parent) { PyObject_GC_UnTrack(self); - pygpu_buffer__tp_clear(self); - Py_XDECREF(self->parent); + Py_CLEAR(self->parent); } else { MEM_freeN(self->buf.as_void); diff --git a/source/blender/python/intern/bpy_props.c b/source/blender/python/intern/bpy_props.c index b2812e0eba7..246387486be 100644 --- a/source/blender/python/intern/bpy_props.c +++ b/source/blender/python/intern/bpy_props.c @@ -203,10 +203,8 @@ static const EnumPropertyItem property_subtype_array_items[] = { static void bpy_prop_deferred_dealloc(BPy_PropDeferred *self) { - if (self->kw) { - PyObject_GC_UnTrack(self); - Py_CLEAR(self->kw); - } + PyObject_GC_UnTrack(self); + Py_CLEAR(self->kw); PyObject_GC_Del(self); } -- cgit v1.2.3