[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48365] branches/soc-2011-tomato/source/ blender: fix for segfault on undo because of loading color profile info.

Campbell Barton ideasman42 at gmail.com
Thu Jun 28 11:18:12 CEST 2012


Revision: 48365
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48365
Author:   campbellbarton
Date:     2012-06-28 09:18:07 +0000 (Thu, 28 Jun 2012)
Log Message:
-----------
fix for segfault on undo because of loading color profile info.

Modified Paths:
--------------
    branches/soc-2011-tomato/source/blender/blenloader/intern/readfile.c
    branches/soc-2011-tomato/source/blender/imbuf/intern/colormanagement.c

Modified: branches/soc-2011-tomato/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenloader/intern/readfile.c	2012-06-28 09:08:11 UTC (rev 48364)
+++ branches/soc-2011-tomato/source/blender/blenloader/intern/readfile.c	2012-06-28 09:18:07 UTC (rev 48365)
@@ -8010,7 +8010,10 @@
 	link_global(fd, bfd);	/* as last */
 
 	/* OCIO_TODO: is there nicer place for this? */
-	IMB_colormanagement_check_file_config(bfd->main);
+	/* ... no its not, perhaps setup_app_data? - campbell */
+	if (fd->memfile == NULL) {  /* don't do this for UNDO */
+		IMB_colormanagement_check_file_config(bfd->main);
+	}
 
 	return bfd;
 }

Modified: branches/soc-2011-tomato/source/blender/imbuf/intern/colormanagement.c
===================================================================
--- branches/soc-2011-tomato/source/blender/imbuf/intern/colormanagement.c	2012-06-28 09:08:11 UTC (rev 48364)
+++ branches/soc-2011-tomato/source/blender/imbuf/intern/colormanagement.c	2012-06-28 09:18:07 UTC (rev 48365)
@@ -562,18 +562,20 @@
 	ColorManagedDisplay *default_display = colormanage_display_get_default();
 	ColorManagedView *default_view = colormanage_view_get_default(default_display);
 
-	for (win = wm->windows.first; win; win = win->next) {
-		if (win->display_device[0] == '\0') {
-			BLI_strncpy(win->display_device, default_display->name, sizeof(win->display_device));
-		}
-		else {
-			ColorManagedDisplay *display = colormanage_display_get_named(win->display_device);
+	if (wm) {
+		for (win = wm->windows.first; win; win = win->next) {
+			if (win->display_device[0] == '\0') {
+				BLI_strncpy(win->display_device, default_display->name, sizeof(win->display_device));
+			}
+			else {
+				ColorManagedDisplay *display = colormanage_display_get_named(win->display_device);
 
-			if (!display) {
-				printf("Blender color management: Window display \"%s\" not found, setting to default (\"%s\").\n",
-				       win->display_device, default_display->name);
+				if (!display) {
+					printf("Blender color management: Window display \"%s\" not found, setting to default (\"%s\").\n",
+						   win->display_device, default_display->name);
 
-				BLI_strncpy(win->display_device, default_display->name, sizeof(win->display_device));
+					BLI_strncpy(win->display_device, default_display->name, sizeof(win->display_device));
+				}
 			}
 		}
 	}




More information about the Bf-blender-cvs mailing list