diff options
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 15 | ||||
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 8 |
2 files changed, 19 insertions, 4 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 9fe2313ea66..32a07db1768 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -5158,7 +5158,7 @@ static void direct_link_screen(FileData *fd, bScreen *sc) } else if(sl->spacetype==SPACE_CONSOLE) { SpaceConsole *sconsole= (SpaceConsole *)sl; - //ConsoleLine *cl; + ConsoleLine *cl, *clnext; link_list(fd, &sconsole->scrollback); link_list(fd, &sconsole->history); @@ -5166,9 +5166,16 @@ static void direct_link_screen(FileData *fd, bScreen *sc) //for(cl= sconsole->scrollback.first; cl; cl= cl->next) // cl->line= newdataadr(fd, cl->line); - //for(cl= sconsole->history.first; cl; cl= cl->next) - // cl->line= newdataadr(fd, cl->line); - + /*comma expressions, (e.g. expr1, expr2, expr3) evalutate each expression, + from left to right. the right-most expression sets the result of the comma + expression as a whole*/ + for(cl= sconsole->history.first; cl && (clnext=cl->next), cl; cl= clnext) { + cl->line= newdataadr(fd, cl->line); + if (!cl->line) { + BLI_remlink(&sconsole->history, cl); + MEM_freeN(cl); + } + } } else if(sl->spacetype==SPACE_FILE) { SpaceFile *sfile= (SpaceFile *)sl; diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 988f562b82a..47b71dfa5e4 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2108,7 +2108,15 @@ static void write_screens(WriteData *wd, ListBase *scrbase) writestruct(wd, DATA, "SpaceLogic", 1, sl); } else if(sl->spacetype==SPACE_CONSOLE) { + SpaceConsole *con = (SpaceConsole*)sl; + ConsoleLine *cl; + + for (cl=con->history.first; cl; cl=cl->next) { + writestruct(wd, DATA, "ConsoleLine", 1, cl); + writedata(wd, DATA, cl->len+1, cl->line); + } writestruct(wd, DATA, "SpaceConsole", 1, sl); + } else if(sl->spacetype==SPACE_USERPREF) { writestruct(wd, DATA, "SpaceUserPref", 1, sl); |