[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