[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30898] trunk/blender/source/blender/ blenkernel/intern/sequencer.c: bugfix [#23106] Blender crashes (segfault) when scene strip file is missing

Campbell Barton ideasman42 at gmail.com
Fri Jul 30 13:40:23 CEST 2010


Revision: 30898
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30898
Author:   campbellbarton
Date:     2010-07-30 13:40:23 +0200 (Fri, 30 Jul 2010)

Log Message:
-----------
bugfix [#23106] Blender crashes (segfault) when scene strip file is missing

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/sequencer.c

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-07-30 11:26:38 UTC (rev 30897)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-07-30 11:40:23 UTC (rev 30898)
@@ -1800,8 +1800,8 @@
 {
 	ImBuf * ibuf = 0;
 	float frame= seq->sfra + nr + seq->anim_startofs;
-	float oldcfra = seq->scene->r.cfra;
-	Object *oldcamera= seq->scene->camera;
+	float oldcfra;
+	Object *oldcamera;
 	ListBase oldmarkers;
 	
 	/* Hack! This function can be called from do_render_seq(), in that case
@@ -1820,21 +1820,20 @@
 	int doseq;
 	int doseq_gl= G.rendering ? /*(scene->r.seq_flag & R_SEQ_GL_REND)*/ 0 : (scene->r.seq_flag & R_SEQ_GL_PREV);
 	int have_seq= FALSE;
-	Scene *sce= seq->scene;// *oldsce= scene;
+	Scene *sce= seq->scene; /* dont refer to seq->scene above this point!, it can be NULL */
 	int sce_valid= FALSE;
 
-	have_seq= (sce->r.scemode & R_DOSEQ) 
-		&& sce->ed && sce->ed->seqbase.first;
-
 	if(sce) {
+		have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first;
 		sce_valid= (sce->camera || have_seq);
 	}
 
-	if (!sce_valid) {
-		return 0;
-	}
+	if (!sce_valid)
+		return NULL;
 
-	
+	oldcfra= seq->scene->r.cfra;
+	oldcamera= seq->scene->camera;
+
 	/* prevent eternal loop */
 	doseq= scene->r.scemode & R_DOSEQ;
 	scene->r.scemode &= ~R_DOSEQ;





More information about the Bf-blender-cvs mailing list