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:
authorJoshua Leung <aligorith@gmail.com>2014-05-09 16:18:47 +0400
committerJoshua Leung <aligorith@gmail.com>2014-05-09 16:19:07 +0400
commit31849cafc26ad3e90ba308a14df5bd6ca66a4cbb (patch)
tree4b4dd85d18b32aa260be301644972ece4c4a9097
parent3a0be8a0d6b50cc2d99befbf883fa2ac85565147 (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.
-rw-r--r--source/blender/blenkernel/intern/anim_sys.c12
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
*/