[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25972] trunk/blender/source/blender: [ #20112] User Preferences window causes a crash

Martin Poirier theeth at yahoo.com
Wed Jan 13 22:37:13 CET 2010


Revision: 25972
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25972
Author:   theeth
Date:     2010-01-13 22:37:13 +0100 (Wed, 13 Jan 2010)

Log Message:
-----------
[#20112] User Preferences window causes a crash

Opened preference window caused a crash (context pointing to freed screen) when Load UI was turned off.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/screen/screen_edit.c
    trunk/blender/source/blender/windowmanager/intern/wm_files.c

Modified: trunk/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_edit.c	2010-01-13 19:53:34 UTC (rev 25971)
+++ trunk/blender/source/blender/editors/screen/screen_edit.c	2010-01-13 21:37:13 UTC (rev 25972)
@@ -1125,7 +1125,13 @@
 	screen->winid= 0;
 	
 	/* before deleting the temp screen or we get invalid access */
-	CTX_wm_window_set(C, prevwin);
+	if (prevwin->screen->full != SCREENTEMP) {
+		/* use previous window if possible */
+		CTX_wm_window_set(C, prevwin);
+	} else {
+		/* none otherwise */
+		CTX_wm_window_set(C, NULL);
+	}
 	
 	/* if temp screen, delete it */
 	if(screen->full == SCREENTEMP) {

Modified: trunk/blender/source/blender/windowmanager/intern/wm_files.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_files.c	2010-01-13 19:53:34 UTC (rev 25971)
+++ trunk/blender/source/blender/windowmanager/intern/wm_files.c	2010-01-13 21:37:13 UTC (rev 25972)
@@ -109,11 +109,13 @@
 static void wm_window_match_init(bContext *C, ListBase *wmlist)
 {
 	wmWindowManager *wm= G.main->wm.first;
-	wmWindow *win;
+	wmWindow *win, *active_win;
 	
 	*wmlist= G.main->wm;
 	G.main->wm.first= G.main->wm.last= NULL;
 	
+	active_win = CTX_wm_window(C);
+
 	/* first wrap up running stuff */
 	/* code copied from wm_init_exit.c */
 	for(wm= wmlist->first; wm; wm= wm->id.next) {
@@ -129,6 +131,9 @@
 		}
 	}
 	
+	/* reset active window */
+	CTX_wm_window_set(C, active_win);
+
 	ED_editors_exit(C);
 	
 return;	





More information about the Bf-blender-cvs mailing list