[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