[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40978] trunk/blender/source/blender/ editors/space_action/action_edit.c: fix [#28898] Segmentation fault when Home key during GreasePencil dopesheet pressed

Campbell Barton ideasman42 at gmail.com
Thu Oct 13 05:35:11 CEST 2011


Revision: 40978
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40978
Author:   campbellbarton
Date:     2011-10-13 03:35:08 +0000 (Thu, 13 Oct 2011)
Log Message:
-----------
fix [#28898] Segmentation fault when Home key during GreasePencil dopesheet pressed

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_action/action_edit.c

Modified: trunk/blender/source/blender/editors/space_action/action_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_action/action_edit.c	2011-10-13 01:51:45 UTC (rev 40977)
+++ trunk/blender/source/blender/editors/space_action/action_edit.c	2011-10-13 03:35:08 UTC (rev 40978)
@@ -246,20 +246,32 @@
 		/* go through channels, finding max extents */
 		for (ale= anim_data.first; ale; ale= ale->next) {
 			AnimData *adt= ANIM_nla_mapping_get(ac, ale);
-			FCurve *fcu= (FCurve *)ale->key_data;
-			float tmin, tmax;
-			
-			/* get range and apply necessary scaling before processing */
-			calc_fcurve_range(fcu, &tmin, &tmax, onlySel);
-			
-			if (adt) {
-				tmin= BKE_nla_tweakedit_remap(adt, tmin, NLATIME_CONVERT_MAP);
-				tmax= BKE_nla_tweakedit_remap(adt, tmax, NLATIME_CONVERT_MAP);
+			if (ale->datatype == ALE_GPFRAME) {
+				bGPDlayer *gpl= ale->data;
+				bGPDframe *gpf;
+
+				/* find gp-frame which is less than or equal to cframe */
+				for (gpf= gpl->frames.first; gpf; gpf= gpf->next) {
+					*min= MIN2(*min, gpf->framenum);
+					*max= MAX2(*max, gpf->framenum);
+				}
 			}
-			
-			/* try to set cur using these values, if they're more extreme than previously set values */
-			*min= MIN2(*min, tmin);
-			*max= MAX2(*max, tmax);
+			else {
+				FCurve *fcu= (FCurve *)ale->key_data;
+				float tmin, tmax;
+
+				/* get range and apply necessary scaling before processing */
+				calc_fcurve_range(fcu, &tmin, &tmax, onlySel);
+
+				if (adt) {
+					tmin= BKE_nla_tweakedit_remap(adt, tmin, NLATIME_CONVERT_MAP);
+					tmax= BKE_nla_tweakedit_remap(adt, tmax, NLATIME_CONVERT_MAP);
+				}
+
+				/* try to set cur using these values, if they're more extreme than previously set values */
+				*min= MIN2(*min, tmin);
+				*max= MAX2(*max, tmax);
+			}
 		}
 		
 		/* free memory */




More information about the Bf-blender-cvs mailing list