Bugfix #5664
authorTon Roosendaal <ton@blender.org>
Fri, 19 Jan 2007 20:33:00 +0000 (20:33 +0000)
committerTon Roosendaal <ton@blender.org>
Fri, 19 Jan 2007 20:33:00 +0000 (20:33 +0000)
Report had a very strange crash, which in the end appeared to be using
a filename of 165 chars long. This gave two bugs;

- the readBlog() function failed on that
- even worse: the struct Global still stored it in G.sce with 160 chars!

This is definitely an important issue... and (for the devs reading the
64 bits discussion) really not something allmighty coders are needed for!
:)

source/blender/blenkernel/BKE_global.h
source/blender/src/usiblender.c

index 37f761d5098dd9af892d7b55f0796410ac055f4b..c3fa0359acb965586c046b5e892e34e3667f3187 100644 (file)
@@ -85,7 +85,7 @@ typedef struct Global {
        struct BMF_Font *font, *fonts, *fontss;
     
        /* strings: lastsaved */
-       char ima[160], sce[160], lib[160];
+       char ima[256], sce[256], lib[256];
 
        /* flag: if != 0 G.sce contains valid relative base path */
        int relbase_valid;
index ab6b15a1ae267d88c8981c120295c1c44af1dc10..725d874289236492dcbbb9232bd78688fa39876f 100644 (file)
@@ -555,7 +555,7 @@ static void free_openrecent(void)
 
 static void readBlog(void)
 {
-       char name[FILE_MAXDIR+FILE_MAXFILE], filename[FILE_MAXFILE];
+       char name[FILE_MAX], filename[FILE_MAX];
        LinkNode *l, *lines;
        struct RecentFile *recent;
        char *line;
@@ -570,11 +570,14 @@ static void readBlog(void)
        for (l= lines, num= 0; l && (num<10); l= l->next, num++) {
                line = l->link;
                if (!BLI_streq(line, "")) {
-                       if (num==0) strcpy(G.sce, line);
+                       if (num==0) 
+                               strcpy(G.sce, line);
+                       
                        recent = (RecentFile*)MEM_mallocN(sizeof(RecentFile),"RecentFile");
                        BLI_addtail(&(G.recent_files), recent);
                        recent->filename = (char*)MEM_mallocN(sizeof(char)*(strlen(line)+1), "name of file");
                        recent->filename[0] = '\0';
+                       
                        strcpy(recent->filename, line);
                }
        }