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:
authorLukas Tönne <lukas.toenne@gmail.com>2014-07-10 15:02:22 +0400
committerLukas Tönne <lukas.toenne@gmail.com>2014-07-10 15:03:05 +0400
commit19f89a083f25c2d69619cfef7df5817d86292ccd (patch)
treed28e797f05a19f6bc5c15ce23e909c6ca9a319f3
parent42615d88b6ebf263ecce7535591fa9f000b1f597 (diff)
Fix for invalid memory access in graph editor when deleting the last
vertex in a fcurve.
-rw-r--r--source/blender/editors/animation/anim_deps.c6
-rw-r--r--source/blender/editors/space_action/action_edit.c4
-rw-r--r--source/blender/editors/space_graph/graph_edit.c1
3 files changed, 8 insertions, 3 deletions
diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c
index 1ca2c247ff0..640349199be 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 08dd00c08fe..091d3fe56b4 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 6ed7689a6c3..1f1aac8c456 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;
}
}