[Bf-blender-cvs] [8851460174a] blender2.8: Proper fix for User Preferences window crash

Julian Eisel noreply at git.blender.org
Wed Mar 7 21:24:18 CET 2018


Commit: 8851460174a5603a0e51e856b00dfa212b0162b2
Author: Julian Eisel
Date:   Wed Mar 7 21:18:16 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB8851460174a5603a0e51e856b00dfa212b0162b2

Proper fix for User Preferences window crash

Reverts rBb9ae517794765d6a1660 and fixes the issue properly. Old fix could cause
NULL to be passed to functions that expect all arguments to be non-NULL.

===================================================================

M	source/blender/editors/scene/scene_edit.c
M	source/blender/windowmanager/intern/wm_window.c

===================================================================

diff --git a/source/blender/editors/scene/scene_edit.c b/source/blender/editors/scene/scene_edit.c
index 6298f03a6b0..da720272f67 100644
--- a/source/blender/editors/scene/scene_edit.c
+++ b/source/blender/editors/scene/scene_edit.c
@@ -134,7 +134,7 @@ void ED_scene_change_update(
 	CTX_data_eval_ctx(C, &eval_ctx_old);
 	eObjectMode object_mode_old = workspace->object_mode;
 	ViewLayer *layer_old = BKE_view_layer_from_workspace_get(scene_old, workspace);
-	Object *obact_old = layer_old ? OBACT(layer_old) : NULL;
+	Object *obact_old = OBACT(layer_old);
 	bool obact_new_mode_exists = ED_object_mode_generic_exists(bmain->wm.first, obact_new, workspace->object_mode);
 
 
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index d9a3f4f9bde..7fef86c006e 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -766,7 +766,11 @@ wmWindow *WM_window_open_temp(bContext *C, int x, int y, int sizex, int sizey, i
 		WM_window_set_active_layout(win, workspace, layout);
 	}
 
-	if (WM_window_get_active_scene(win) != scene) {
+	if (win->scene == NULL) {
+		win->scene = scene;
+	}
+	/* In case we reuse an already existing temp window (see win lookup above). */
+	else if (WM_window_get_active_scene(win) != scene) {
 		WM_window_change_active_scene(bmain, C, win, scene);
 	}



More information about the Bf-blender-cvs mailing list