[Bf-blender-cvs] [f7dbce9] master: Real fix for T44127: Python does not guarantee to free all objects on exit...

Bastien Montagne noreply at git.blender.org
Wed Apr 1 09:35:40 CEST 2015


Commit: f7dbce9914a86952b1a9ca2657a3c735cb693ef1
Author: Bastien Montagne
Date:   Wed Apr 1 09:34:01 2015 +0200
Branches: master
https://developer.blender.org/rBf7dbce9914a86952b1a9ca2657a3c735cb693ef1

Real fix for T44127: Python does not guarantee to free all objects on exit...

All kudos to Campbell for the head-up and patch!

===================================================================

M	source/blender/python/intern/bpy_app_translations.c
M	source/blender/python/intern/bpy_app_translations.h
M	source/blender/python/intern/bpy_interface.c

===================================================================

diff --git a/source/blender/python/intern/bpy_app_translations.c b/source/blender/python/intern/bpy_app_translations.c
index 123b111..ae5ea88 100644
--- a/source/blender/python/intern/bpy_app_translations.c
+++ b/source/blender/python/intern/bpy_app_translations.c
@@ -821,3 +821,12 @@ PyObject *BPY_app_translations_struct(void)
 
 	return ret;
 }
+
+void BPY_app_translations_end(void)
+{
+	/* Incase the object remains in a module's namespace, see T44127. */
+#ifdef WITH_INTERNATIONAL
+	_clear_translations_cache();
+#endif
+}
+
diff --git a/source/blender/python/intern/bpy_app_translations.h b/source/blender/python/intern/bpy_app_translations.h
index 7043075..e04c248 100644
--- a/source/blender/python/intern/bpy_app_translations.h
+++ b/source/blender/python/intern/bpy_app_translations.h
@@ -28,5 +28,6 @@
 #define __BPY_APP_TRANSLATIONS_H__
 
 PyObject *BPY_app_translations_struct(void);
+void      BPY_app_translations_end(void);
 
 #endif /* __BPY_APP_TRANSLATIONS_H__ */
diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c
index 5b4db89..690ea11 100644
--- a/source/blender/python/intern/bpy_interface.c
+++ b/source/blender/python/intern/bpy_interface.c
@@ -61,6 +61,8 @@
 #include "bpy_traceback.h"
 #include "bpy_intern_string.h"
 
+#include "bpy_app_translations.h"
+
 #include "DNA_text_types.h"
 
 #include "BKE_appdir.h"
@@ -358,6 +360,9 @@ void BPY_python_end(void)
 
 	bpy_intern_string_exit();
 
+	/* bpy.app modules that need cleanup */
+	BPY_app_translations_end();
+
 #ifndef WITH_PYTHON_MODULE
 	BPY_atexit_unregister(); /* without this we get recursive calls to WM_exit */




More information about the Bf-blender-cvs mailing list