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
path: root/source
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2015-03-01 19:04:38 +0300
committerJoshua Leung <aligorith@gmail.com>2015-03-01 19:05:04 +0300
commit2058505da4e52d9fe1920ab11935dfdf99c1edbc (patch)
treebf3cdf05a8b97e1f5f68ad44135f2e5d3c1fa5dd /source
parentf076eb482b3e2e169b2bbf7ca609f5e747f9709f (diff)
Bugfix T43851: Creating a new action after stashing crashes blender
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/nla.c8
-rw-r--r--source/blender/editors/space_action/action_edit.c4
2 files changed, 10 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/nla.c b/source/blender/blenkernel/intern/nla.c
index 8e143e2303b..9a04312aaab 100644
--- a/source/blender/blenkernel/intern/nla.c
+++ b/source/blender/blenkernel/intern/nla.c
@@ -1564,6 +1564,12 @@ bool BKE_nla_action_stash(AnimData *adt)
NlaTrack *nlt;
NlaStrip *strip;
+ /* sanity check */
+ if (ELEM(NULL, adt, adt->action)) {
+ printf("%s: Invalid argument - %p %p\n", __func__, adt, adt->action);
+ return false;
+ }
+
/* do not add if it is already stashed */
if (BKE_nla_action_is_stashed(adt, adt->action))
return false;
@@ -1576,6 +1582,7 @@ bool BKE_nla_action_stash(AnimData *adt)
}
nlt = add_nlatrack(adt, prev_track);
+ BLI_assert(nlt != NULL);
BLI_strncpy(nlt->name, STASH_TRACK_NAME, sizeof(nlt->name));
BLI_uniquename(&adt->nla_tracks, nlt, STASH_TRACK_NAME, '.', offsetof(NlaTrack, name), sizeof(nlt->name));
@@ -1584,6 +1591,7 @@ bool BKE_nla_action_stash(AnimData *adt)
* NOTE: a new user is created here
*/
strip = add_nlastrip(adt->action);
+ BLI_assert(strip != NULL);
BKE_nlatrack_add_strip(nlt, strip);
BKE_nlastrip_validate_name(adt, strip);
diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c
index 149956106c5..764e426341a 100644
--- a/source/blender/editors/space_action/action_edit.c
+++ b/source/blender/editors/space_action/action_edit.c
@@ -217,8 +217,8 @@ static int action_new_exec(bContext *C, wmOperator *UNUSED(op))
adt = actedit_animdata_from_context(C);
}
- /* Perform stashing operation */
- if (adt) {
+ /* Perform stashing operation - But only if there is an action */
+ if (adt && oldact) {
/* stash the action */
if (BKE_nla_action_stash(adt)) {
/* The stash operation will remove the user already