[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