[Bf-blender-cvs] [d964bad] master: Fix for crash when userprefs fails to read.

Campbell Barton noreply at git.blender.org
Wed May 7 22:37:07 CEST 2014


Commit: d964bad67b37b64746d42ca01c03f4e404008dde
Author: Campbell Barton
Date:   Thu May 8 06:35:38 2014 +1000
https://developer.blender.org/rBd964bad67b37b64746d42ca01c03f4e404008dde

Fix for crash when userprefs fails to read.

===================================================================

M	source/blender/blenkernel/intern/blender.c
M	source/blender/windowmanager/intern/wm_files.c

===================================================================

diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index 3d323db..8b87f5b 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -500,20 +500,22 @@ int BKE_read_file_from_memfile(bContext *C, MemFile *memfile, ReportList *report
 int BKE_read_file_userdef(const char *filepath, ReportList *reports)
 {
 	BlendFileData *bfd;
-	int retval = 0;
-	
+	int retval = BKE_READ_FILE_FAIL;
+
 	bfd = BLO_read_from_file(filepath, reports);
-	if (bfd->user) {
-		retval = BKE_READ_FILE_OK_USERPREFS;
-		
-		/* only here free userdef themes... */
-		BKE_userdef_free();
-		
-		U = *bfd->user;
-		MEM_freeN(bfd->user);
+	if (bfd) {
+		if (bfd->user) {
+			retval = BKE_READ_FILE_OK_USERPREFS;
+
+			/* only here free userdef themes... */
+			BKE_userdef_free();
+
+			U = *bfd->user;
+			MEM_freeN(bfd->user);
+		}
+		BKE_main_free(bfd->main);
+		MEM_freeN(bfd);
 	}
-	BKE_main_free(bfd->main);
-	MEM_freeN(bfd);
 	
 	return retval;
 }
diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c
index 997bb12..1ec2e6a 100644
--- a/source/blender/windowmanager/intern/wm_files.c
+++ b/source/blender/windowmanager/intern/wm_files.c
@@ -603,7 +603,7 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c
 	/* check new prefs only after startup.blend was finished */
 	if (!from_memory && BLI_exists(prefstr)) {
 		int done = BKE_read_file_userdef(prefstr, NULL);
-		if (done) {
+		if (done != BKE_READ_FILE_FAIL) {
 			read_userdef_from_memory = false;
 			printf("Read new prefs: %s\n", prefstr);
 		}




More information about the Bf-blender-cvs mailing list