[Bf-blender-cvs] [9f6c9ca] soc-2013-paint: Fix for invalid memory access in graph editor when deleting the last vertex in a fcurve.

Lukas Tönne noreply at git.blender.org
Sat Jul 12 12:44:47 CEST 2014


Commit: 9f6c9ca636e3e0becac4fdf3805f86eb78939be9
Author: Lukas Tönne
Date:   Thu Jul 10 13:02:22 2014 +0200
https://developer.blender.org/rB9f6c9ca636e3e0becac4fdf3805f86eb78939be9

Fix for invalid memory access in graph editor when deleting the last
vertex in a fcurve.

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

M	source/blender/editors/animation/anim_deps.c
M	source/blender/editors/space_action/action_edit.c
M	source/blender/editors/space_graph/graph_edit.c

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

diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c
index 1ca2c24..6403491 100644
--- a/source/blender/editors/animation/anim_deps.c
+++ b/source/blender/editors/animation/anim_deps.c
@@ -364,12 +364,14 @@ void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
 
 		if (ale->update & ANIM_UPDATE_ORDER) {
 			ale->update &= ~ANIM_UPDATE_ORDER;
-			sort_time_fcurve(fcu);
+			if (fcu)
+				sort_time_fcurve(fcu);
 		}
 
 		if (ale->update & ANIM_UPDATE_HANDLES) {
 			ale->update &= ~ANIM_UPDATE_HANDLES;
-			calchandles_fcurve(fcu);
+			if (fcu)
+				calchandles_fcurve(fcu);
 		}
 
 		if (ale->update & ANIM_UPDATE_DEPS) {
diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c
index 08dd00c..091d3fe 100644
--- a/source/blender/editors/space_action/action_edit.c
+++ b/source/blender/editors/space_action/action_edit.c
@@ -878,8 +878,10 @@ static bool delete_action_keys(bAnimContext *ac)
 			changed = delete_fcurve_keys(fcu);
 			
 			/* Only delete curve too if it won't be doing anything anymore */
-			if ((fcu->totvert == 0) && (list_has_suitable_fmodifier(&fcu->modifiers, 0, FMI_TYPE_GENERATE_CURVE) == 0))
+			if ((fcu->totvert == 0) && (list_has_suitable_fmodifier(&fcu->modifiers, 0, FMI_TYPE_GENERATE_CURVE) == 0)) {
 				ANIM_fcurve_delete_from_animdata(ac, adt, fcu);
+				ale->key_data = NULL;
+			}
 		}
 
 		if (changed) {
diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c
index 6ed7689..1f1aac8 100644
--- a/source/blender/editors/space_graph/graph_edit.c
+++ b/source/blender/editors/space_graph/graph_edit.c
@@ -907,6 +907,7 @@ static bool delete_graph_keys(bAnimContext *ac)
 		    (fcu->driver == NULL))
 		{
 			ANIM_fcurve_delete_from_animdata(ac, adt, fcu);
+			ale->key_data = NULL;
 		}
 	}




More information about the Bf-blender-cvs mailing list