fix for crash when setting layers or saving when there is no active scene - only...
authorCampbell Barton <ideasman42@gmail.com>
Mon, 4 Jul 2011 05:23:36 +0000 (05:23 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 4 Jul 2011 05:23:36 +0000 (05:23 +0000)
source/blender/makesrna/intern/rna_object.c
source/blender/windowmanager/intern/wm_files.c

index 6b925b42e066de41cb1a308e536374e1ad1cb351..dd66e49fdec1ad2f228aafb8776d1cc191055ee3 100644 (file)
@@ -270,11 +270,16 @@ static void rna_Base_select_update(Main *UNUSED(bmain), Scene *UNUSED(scene), Po
 static void rna_Object_layer_update__internal(Main *bmain, Scene *scene, Base *base, Object *ob)
 {
        /* try to avoid scene sort */
-       if((ob->lay & scene->lay) && (base->lay & scene->lay)) {
+       if(scene == NULL) {
+               /* pass - unlikely but when running scripts on startup it happens */
+       }
+       else if((ob->lay & scene->lay) && (base->lay & scene->lay)) {
                 /* pass */
-       } else if((ob->lay & scene->lay)==0 && (base->lay & scene->lay)==0) {
+       }
+       else if((ob->lay & scene->lay)==0 && (base->lay & scene->lay)==0) {
                /* pass */
-       } else {
+       }
+       else {
                DAG_scene_sort(bmain, scene);
        }
 }
@@ -284,7 +289,7 @@ static void rna_Object_layer_update(Main *bmain, Scene *scene, PointerRNA *ptr)
        Object *ob= (Object*)ptr->id.data;
        Base *base;
 
-       base= object_in_scene(ob, scene);
+       base= scene ? object_in_scene(ob, scene) : NULL;
        if(!base)
                return;
        
index e0cfb86ce054e80ea5e8994d95f17c524d014a89..aabaf6d40557f478e8edf3dfcc024a3bf796834c 100644 (file)
@@ -635,8 +635,9 @@ static ImBuf *blend_file_thumb(Scene *scene, int **thumb_pt)
        char err_out[256]= "unknown";
 
        *thumb_pt= NULL;
-       
-       if(G.background || scene->camera==NULL)
+
+       /* scene can be NULL if running a script at startup and calling the save operator */
+       if(G.background || scene==NULL || scene->camera==NULL)
                return NULL;
 
        /* gets scaled to BLEN_THUMB_SIZE */