From a818ad5a54984ce139c85fc0b6dfb9a97f18d877 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 28 Jul 2021 01:07:14 +1000 Subject: Fix memory leak with Python RNA property get callback errors Failure to return a list of the expected size & type wasn't decrementing the value, leaking a reference. Caused by 127b5423d6203d521acb2b96b7de5534e8dbe79a a workaround for the real error that was fixed f5e020a7a6ad6451fcaf075ae14f7014b8a4faea. --- source/blender/python/intern/bpy_props.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) (limited to 'source') diff --git a/source/blender/python/intern/bpy_props.c b/source/blender/python/intern/bpy_props.c index e4e6b3ea8f2..2654a943d86 100644 --- a/source/blender/python/intern/bpy_props.c +++ b/source/blender/python/intern/bpy_props.c @@ -715,12 +715,8 @@ static void bpy_prop_boolean_array_get_fn(struct PointerRNA *ptr, for (i = 0; i < len; i++) { values[i] = false; } - - /* PyC_AsArray decrements refcount internally on error */ - } - else { - Py_DECREF(ret); } + Py_DECREF(ret); } if (use_gil) { @@ -965,12 +961,8 @@ static void bpy_prop_int_array_get_fn(struct PointerRNA *ptr, for (i = 0; i < len; i++) { values[i] = 0; } - - /* PyC_AsArray decrements refcount internally on error */ - } - else { - Py_DECREF(ret); } + Py_DECREF(ret); } if (use_gil) { @@ -1215,12 +1207,8 @@ static void bpy_prop_float_array_get_fn(struct PointerRNA *ptr, for (i = 0; i < len; i++) { values[i] = 0.0f; } - - /* PyC_AsArray decrements refcount internally on error */ - } - else { - Py_DECREF(ret); } + Py_DECREF(ret); } if (use_gil) { -- cgit v1.2.3