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:
authorKen Hughes <khughes@pacific.edu>2005-11-30 11:18:06 +0300
committerKen Hughes <khughes@pacific.edu>2005-11-30 11:18:06 +0300
commitb7a4a6c8374e808837e45829ec85c48a409efd74 (patch)
treeb6eb82e42fb0ff62bd60071267b4bf00afbb5a7f /source/blender/python/api2_2x/gen_utils.h
parent00f43109705ab7f251e4487143049205e27e38f1 (diff)
-- Bugfix #3186: Fix memory leaks caused by multiple calls to
PyDict_SetItemString() with objects that were not properly decrefed afterwards. Due to the number of places this was used, I added a wrapper EXPP_dict_set_item_str() to gen_utils.c to handle it. This started as a scriptlink bug, due to how many times scripts were being executed I think it just magnified how bad the memory leak in BPy was. Animating the blend attached with this bug report would cause memory to grow by about 3MB for every 280 frames. After the patch, memory did not appear to grow at all (or at least not noticably using Unix's ps and top utils). Since many of the PyDict_SetItemString() calls were in initialization modules I think my tests executed most of the changed code, but would appreciate script users really giving feedback.
Diffstat (limited to 'source/blender/python/api2_2x/gen_utils.h')
-rw-r--r--source/blender/python/api2_2x/gen_utils.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/source/blender/python/api2_2x/gen_utils.h b/source/blender/python/api2_2x/gen_utils.h
index d0e618635a5..a4debf87d35 100644
--- a/source/blender/python/api2_2x/gen_utils.h
+++ b/source/blender/python/api2_2x/gen_utils.h
@@ -142,5 +142,8 @@ PyObject *EXPP_clearScriptLinks(ScriptLink *slink, PyObject *args);
/* this queues redraws if we're not in background mode: */
void EXPP_allqueue(unsigned short event, short val);
+/* helper to keep dictionaries from causing memory leaks */
+int EXPP_dict_set_item_str( PyObject *dict, char *key, PyObject *value);
+
#endif /* EXPP_gen_utils_h */