[Bf-blender-cvs] [09d6ad6] master: Fix T38108: blender freeze in remembering operator properties.

Brecht Van Lommel noreply at git.blender.org
Wed Jan 8 17:54:56 CET 2014


Commit: 09d6ad614242ff007bf952ce815082b2eafb024c
Author: Brecht Van Lommel
Date:   Wed Jan 8 17:48:38 2014 +0100
https://developer.blender.org/rB09d6ad614242ff007bf952ce815082b2eafb024c

Fix T38108: blender freeze in remembering operator properties.

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

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

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

diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index ee8ad08..2233827 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -893,6 +893,8 @@ bool WM_operator_last_properties_init(wmOperator *op)
 	bool changed = false;
 
 	if (op->type->last_properties) {
+		IDPropertyTemplate val = {0};
+		IDProperty *replaceprops = IDP_New(IDP_GROUP, &val, "wmOperatorProperties");
 		PropertyRNA *iterprop;
 
 		if (G.debug & G_DEBUG_WM) {
@@ -915,13 +917,19 @@ bool WM_operator_last_properties_init(wmOperator *op)
 						 * but for now RNA doesn't access nested operators */
 						idp_dst->flag |= IDP_FLAG_GHOST;
 
-						IDP_ReplaceInGroup(op->properties, idp_dst);
+						/* add to temporary group instead of immediate replace,
+						 * because we are iterating over this group */
+						IDP_AddToGroup(replaceprops, idp_dst);
 						changed = true;
 					}
 				}
 			}
 		}
 		RNA_PROP_END;
+
+		IDP_MergeGroup(op->properties, replaceprops, true);
+		IDP_FreeProperty(replaceprops);
+		MEM_freeN(replaceprops);
 	}
 
 	return changed;




More information about the Bf-blender-cvs mailing list