[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39866] trunk/blender/source/blender/ editors/animation/anim_filter.c: fix [#28460] SEGFAULT when trying to make empty display as image

Campbell Barton ideasman42 at gmail.com
Fri Sep 2 10:20:31 CEST 2011


Revision: 39866
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39866
Author:   campbellbarton
Date:     2011-09-02 08:20:30 +0000 (Fri, 02 Sep 2011)
Log Message:
-----------
fix [#28460] SEGFAULT when trying to make empty display as image

Modified Paths:
--------------
    trunk/blender/source/blender/editors/animation/anim_filter.c

Modified: trunk/blender/source/blender/editors/animation/anim_filter.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_filter.c	2011-09-02 08:01:01 UTC (rev 39865)
+++ trunk/blender/source/blender/editors/animation/anim_filter.c	2011-09-02 08:20:30 UTC (rev 39866)
@@ -1177,29 +1177,34 @@
 /* determine what animation data from AnimData block should get displayed */
 static size_t animfilter_block_data (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, ID *id, int filter_mode)
 {
-	IdAdtTemplate *iat = (IdAdtTemplate*)id;
 	AnimData *adt = BKE_animdata_from_id(id);
 	size_t items = 0;
-	
-	/* NOTE: this macro is used instead of inlining the logic here, since this sort of filtering is still needed 
-	 * in a few places in he rest of the code still - notably for the few cases where special mode-based 
-	 * different types of data expanders are required.
-	 */
-	ANIMDATA_FILTER_CASES(iat,
-		{ /* AnimData */
-			/* specifically filter animdata block */
-			ANIMCHANNEL_NEW_CHANNEL(adt, ANIMTYPE_ANIMDATA, id);
-		},
-		{ /* NLA */
-			items += animfilter_nla(ac, anim_data, ads, adt, filter_mode, id); 
-		},
-		{ /* Drivers */
-			items += animfilter_fcurves(anim_data, ads, adt->drivers.first, NULL, filter_mode, id);
-		},
-		{ /* Keyframes */
-			items += animfilter_action(ac, anim_data, ads, adt->action, filter_mode, id);
-		});
-	
+
+	/* image object datablocks have no anim-data so check for NULL */
+	if(adt) {
+		IdAdtTemplate *iat = (IdAdtTemplate*)id;
+
+		/* NOTE: this macro is used instead of inlining the logic here, since this sort of filtering is still needed
+		 * in a few places in he rest of the code still - notably for the few cases where special mode-based
+		 * different types of data expanders are required.
+		 */
+		ANIMDATA_FILTER_CASES(iat,
+			{ /* AnimData */
+				/* specifically filter animdata block */
+				ANIMCHANNEL_NEW_CHANNEL(adt, ANIMTYPE_ANIMDATA, id);
+			},
+			{ /* NLA */
+				items += animfilter_nla(ac, anim_data, ads, adt, filter_mode, id);
+			},
+			{ /* Drivers */
+				items += animfilter_fcurves(anim_data, ads, adt->drivers.first, NULL, filter_mode, id);
+			},
+			{ /* Keyframes */
+				items += animfilter_action(ac, anim_data, ads, adt->action, filter_mode, id);
+			}
+		);
+	}
+
 	return items;
 }
 




More information about the Bf-blender-cvs mailing list