diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-09-06 16:54:54 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-09-06 16:54:54 +0400 |
commit | 259b4c12e3010692a2f45d1493005b242f14cb6c (patch) | |
tree | 2633685988cb657e870f2b45ecf72c6ad4c664c4 /source/blender | |
parent | 629c19ff87c5a456ed3ee9f2c79bf358cbb91478 (diff) |
bugfix [#23674] Fix for texture path corruptions (bug 23337)
from Mathew Burrack (mburrack)
...also applied a fix so this flag wont be written but including this patch for older startup.blend's.
--- from the tracker
I've created a patch for the texture path corruption bug, 23337. Basically, G_FILE_RELATIVE_REMAP was improperly getting
saved out to the startup.blend file, causing issues when the autosave timer went off. The proper fix is to mask out
that flag so it doesn't get written out to .blend files itself, but since that doesn't fix any pre-existing startup.blend
files, I just mask it out when startup.blend is read in instead.
I've tested it locally and so far, it seems to fix all the issues I've had with texture image paths getting corrupted.
I haven't figured out how to properly test the remap-on-save option in the save as dialog, though, so I don't know if
I accidentally broke that or not (although I don't see how I could have).
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 6 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_files.c | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index f9f66ed8504..dc5a0dbeafa 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -273,7 +273,7 @@ static void mywrite( WriteData *wd, void *adr, int len) * @param write_flags Write parameters * @warning Talks to other functions with global parameters */ -static WriteData *bgnwrite(int file, MemFile *compare, MemFile *current, int write_flags) +static WriteData *bgnwrite(int file, MemFile *compare, MemFile *current) { WriteData *wd= writedata_new(file); @@ -2349,7 +2349,7 @@ static void write_global(WriteData *wd, int fileflags, Main *mainvar) fg.curscene= screen->scene; fg.displaymode= G.displaymode; fg.winpos= G.winpos; - fg.fileflags= (fileflags & ~G_FILE_NO_UI); // prevent to save this, is not good convention, and feature with concerns... + fg.fileflags= (fileflags & ~(G_FILE_NO_UI|G_FILE_RELATIVE_REMAP)); // prevent to save this, is not good convention, and feature with concerns... fg.globalf= G.f; BLI_strncpy(fg.filename, mainvar->name, sizeof(fg.filename)); @@ -2384,7 +2384,7 @@ static int write_file_handle(Main *mainvar, int handle, MemFile *compare, MemFil blo_split_main(&mainlist, mainvar); - wd= bgnwrite(handle, compare, current, write_flags); + wd= bgnwrite(handle, compare, current); sprintf(buf, "BLENDER%c%c%.3d", (sizeof(void*)==8)?'-':'_', (ENDIAN_ORDER==B_ENDIAN)?'V':'v', BLENDER_VERSION); mywrite(wd, buf, 12); diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index b24e0333bac..1264f496103 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -374,6 +374,10 @@ int WM_read_homefile(bContext *C, wmOperator *op) if (wmbase.first == NULL) wm_clear_default_size(C); } + /* prevent buggy files that had G_FILE_RELATIVE_REMAP written out by mistake. Screws up autosaves otherwise + * can remove this eventually, only in a 2.53 and older, now its not written */ + G.fileflags &= ~G_FILE_RELATIVE_REMAP; + /* match the read WM with current WM */ wm_window_match_do(C, &wmbase); WM_check(C); /* opens window(s), checks keymaps */ |