[Bf-blender-cvs] [d808557d15d] master: Fix memory leak re-registering operators

Campbell Barton noreply at git.blender.org
Wed Mar 29 04:34:38 CEST 2017


Commit: d808557d15dbf09401d8ab40c59ce69c89a2d041
Author: Campbell Barton
Date:   Wed Mar 29 13:26:34 2017 +1100
Branches: master
https://developer.blender.org/rBd808557d15dbf09401d8ab40c59ce69c89a2d041

Fix memory leak re-registering operators

Re-registering an operator used by the keymap would lead memory.
Reload scripts for eg leaked over ~1600 blocks.

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

M	source/blender/windowmanager/intern/wm_keymap.c

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

diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index e201fa433d4..db5fc23146f 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -121,6 +121,13 @@ static void wm_keymap_item_properties_update_ot(wmKeyMapItem *kmi)
 			if (ot->srna != kmi->ptr->type) {
 				/* matches wm_keymap_item_properties_set but doesnt alloc new ptr */
 				WM_operator_properties_create_ptr(kmi->ptr, ot);
+				/* 'kmi->ptr->data' NULL'd above, keep using existing properties.
+				 * Note: the operators property types may have changed,
+				 * we will need a more comprehensive sanitize function to support this properly.
+				 */
+				if (kmi->properties) {
+					kmi->ptr->data = kmi->properties;
+				}
 				WM_operator_properties_sanitize(kmi->ptr, 1);
 			}
 		}




More information about the Bf-blender-cvs mailing list