fix for more crashes with baked fcurves
authorCampbell Barton <ideasman42@gmail.com>
Wed, 3 Mar 2010 13:20:18 +0000 (13:20 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 3 Mar 2010 13:20:18 +0000 (13:20 +0000)
source/blender/editors/animation/keyframes_general.c
source/blender/editors/transform/transform_conversions.c
source/blender/editors/transform/transform_generics.c

index 1d9c251d205645a549f7649cfc629f5d7d286ccc..ae2c617bc8023d5dae769ae160052b404842d2f3 100644 (file)
@@ -372,6 +372,9 @@ void sample_fcurve (FCurve *fcu)
        tempFrameValCache *value_cache, *fp;
        int sfra, range;
        int i, n, nIndex;
+
+       if(fcu->bezt==NULL) /* ignore baked */
+               return NULL;
        
        /* find selected keyframes... once pair has been found, add keyframes  */
        for (i=0, bezt=fcu->bezt; i < fcu->totvert; i++, bezt++) {
index 9d236bd47dbc809aaa4f83ddc383781f64547734..e5e6809bf1394407e72e96def1674e05950ea8dd 100644 (file)
@@ -2912,7 +2912,7 @@ static void posttrans_fcurve_clean (FCurve *fcu)
 
        /* allocate memory for the cache */
        // TODO: investigate using BezTriple columns instead?
-       if (fcu->totvert == 0)
+       if (fcu->totvert == 0 || fcu->bezt==NULL)
                return;
        selcache= MEM_callocN(sizeof(float)*fcu->totvert, "FCurveSelFrameNums");
        len= 0;
index 27eb48614d2dc98009e086295da159903904bf3b..4ca821e2b01343f5c058b3bb24ca55d2df3c10cd 100644 (file)
@@ -323,10 +323,13 @@ static void animrecord_check_state (Scene *scene, ID *id, wmTimer *animtimer)
 
 static int fcu_test_selected(FCurve *fcu)
 {
-       BezTriple *bezt;
+       BezTriple *bezt= fcu->bezt;
        int i;
 
-       for (i=0, bezt=fcu->bezt; i < fcu->totvert; i++, bezt++) {
+       if(bezt==NULL) /* ignore baked */
+               return 0;
+
+       for (i=0; i < fcu->totvert; i++, bezt++) {
                if (BEZSELECTED(bezt)) return 1;
        }