[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25497] trunk/blender/source/blender/ blenloader/intern/readfile.c: Fix #20442: opening . blend file with hanging temp screens could crash,

Brecht Van Lommel brecht at blender.org
Mon Dec 21 11:46:14 CET 2009


Revision: 25497
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25497
Author:   blendix
Date:     2009-12-21 11:46:14 +0100 (Mon, 21 Dec 2009)

Log Message:
-----------
Fix #20442: opening .blend file with hanging temp screens could crash,
version patch removed these screens, but not the corresponding windows.

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2009-12-21 10:40:55 UTC (rev 25496)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2009-12-21 10:46:14 UTC (rev 25497)
@@ -10156,12 +10156,26 @@
 		/* clear hanging 'temp' screens from older 2.5 files*/
 		if (main->versionfile == 250) {
 			bScreen *screen, *nextscreen;
+			wmWindowManager *wm;
+			wmWindow *win, *nextwin;
 
 			for(screen= main->screen.first; screen; screen= nextscreen) {
 				nextscreen= screen->id.next;
 
-				if (screen->full == SCREENTEMP)
+				if (screen->full == SCREENTEMP) {
+					/* remove corresponding windows */
+					for(wm= main->wm.first; wm; wm=wm->id.next) {
+						for(win= wm->windows.first; win; win=nextwin) {
+							nextwin= win->next;
+
+							if(newlibadr(fd, wm->id.lib, win->screen) == screen)
+								BLI_freelinkN(&wm->windows, win);
+						}
+					}
+
+					/* remove screen itself */
 					free_libblock(&main->screen, screen);
+				}
 			}
 		}
 	}





More information about the Bf-blender-cvs mailing list