diff options
author | Joshua Leung <aligorith@gmail.com> | 2014-05-09 16:18:47 +0400 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2014-05-09 16:19:07 +0400 |
commit | 31849cafc26ad3e90ba308a14df5bd6ca66a4cbb (patch) | |
tree | 4b4dd85d18b32aa260be301644972ece4c4a9097 /source/blender/blenkernel/intern/anim_sys.c | |
parent | 3a0be8a0d6b50cc2d99befbf883fa2ac85565147 (diff) |
Fix for random crashes when grabbing (rmb-drag) NLA strips
Although these crashes were quite sporadic, they seemed to happen most when
rmb-dragging strips randomly in quick succession. The most likely cause seems
to be a null check I accidentally took out during one of my commits yesterday.
Diffstat (limited to 'source/blender/blenkernel/intern/anim_sys.c')
-rw-r--r-- | source/blender/blenkernel/intern/anim_sys.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c index ef6f5fb8f39..ee524891b9b 100644 --- a/source/blender/blenkernel/intern/anim_sys.c +++ b/source/blender/blenkernel/intern/anim_sys.c @@ -2140,10 +2140,12 @@ static void nlastrip_evaluate_meta(PointerRNA *ptr, ListBase *channels, ListBase /* directly evaluate child strip into accumulation buffer... * - there's no need to use a temporary buffer (as it causes issues [T40082]) */ - nlastrip_evaluate(ptr, channels, &tmp_modifiers, tmp_nes); - - /* free temp eval-strip */ - MEM_freeN(tmp_nes); + if (tmp_nes) { + nlastrip_evaluate(ptr, channels, &tmp_modifiers, tmp_nes); + + /* free temp eval-strip */ + MEM_freeN(tmp_nes); + } /* unlink this strip's modifiers from the parent's modifiers again */ nlaeval_fmodifiers_split_stacks(&strip->modifiers, modifiers); @@ -2153,7 +2155,7 @@ static void nlastrip_evaluate_meta(PointerRNA *ptr, ListBase *channels, ListBase void nlastrip_evaluate(PointerRNA *ptr, ListBase *channels, ListBase *modifiers, NlaEvalStrip *nes) { NlaStrip *strip = nes->strip; - + /* to prevent potential infinite recursion problems (i.e. transition strip, beside meta strip containing a transition * several levels deep inside it), we tag the current strip as being evaluated, and clear this when we leave */ |