diff options
author | Campbell Barton <ideasman42@gmail.com> | 2014-05-08 00:35:38 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2014-05-08 00:36:43 +0400 |
commit | d964bad67b37b64746d42ca01c03f4e404008dde (patch) | |
tree | aaa37f314d176739583bb938aeb0dae3bce6b702 /source | |
parent | 65d54f34b13ddd815fdffad85b3e3e0ab542c0b1 (diff) |
Fix for crash when userprefs fails to read.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/blender.c | 26 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_files.c | 2 |
2 files changed, 15 insertions, 13 deletions
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 3d323db2623..8b87f5b0cea 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 997bb12d711..1ec2e6a3ee0 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); } |