Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2021-07-27 18:07:14 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-07-27 18:12:26 +0300
commitd6d44faff06dc7014e275d33d1be449ac62fcab6 (patch)
tree3ee2a27c91da8069a0c243caa18a9ca07495149b /source/blender/python
parent766e67e55db4d5235f66ec8e320e23cd0def6de9 (diff)
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.
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/intern/bpy_props.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/source/blender/python/intern/bpy_props.c b/source/blender/python/intern/bpy_props.c
index 0b812037810..c6d81c788ff 100644
--- a/source/blender/python/intern/bpy_props.c
+++ b/source/blender/python/intern/bpy_props.c
@@ -726,12 +726,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) {
@@ -977,12 +973,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) {
@@ -1228,12 +1220,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) {