Revision: 36737
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36737
Author:   campbellbarton
Date:     2011-05-18 06:48:52 +0000 (Wed, 18 May 2011)
Log Message:
-----------
- check paths are not empty strings before making blend file paths absolute or 
relative.
- when saving blend file with 'Remap Relative' enabled, don't try make paths 
absolute if the internal filename is invalid.
- use case insensitive path comparison on windows when checking if path 
remapping is needed & for comparing next/prev dirs in the file selector.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/bpath.c
    trunk/blender/source/blender/blenloader/intern/writefile.c
    trunk/blender/source/blender/editors/space_file/filelist.c

Modified: trunk/blender/source/blender/blenlib/intern/bpath.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/bpath.c 2011-05-18 06:27:32 UTC 
(rev 36736)
+++ trunk/blender/source/blender/blenlib/intern/bpath.c 2011-05-18 06:48:52 UTC 
(rev 36737)
@@ -699,7 +699,12 @@
        
        /* be sure there is low chance of the path being too short */
        char filepath_relative[(FILE_MAXDIR * 2) + FILE_MAXFILE];
-       
+
+       if(basedir[0] == '\0') {
+               printf("makeFilesRelative: basedir='', this is a bug\n");
+               return;
+       }
+
        BLI_bpathIterator_init(&bpi, bmain, basedir, 0);
        while (!BLI_bpathIterator_isDone(bpi)) {
                BLI_bpathIterator_getPath(bpi, filepath);
@@ -751,7 +756,10 @@
        /* be sure there is low chance of the path being too short */
        char filepath_absolute[(FILE_MAXDIR * 2) + FILE_MAXFILE];
 
-       BLI_assert(basedir[0] != '\0');
+       if(basedir[0] == '\0') {
+               printf("makeFilesAbsolute: basedir='', this is a bug\n");
+               return;
+       }
 
        BLI_bpathIterator_init(&bpi, bmain, basedir, 0);
        while (!BLI_bpathIterator_isDone(bpi)) {

Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/writefile.c  2011-05-18 
06:27:32 UTC (rev 36736)
+++ trunk/blender/source/blender/blenloader/intern/writefile.c  2011-05-18 
06:48:52 UTC (rev 36737)
@@ -2547,10 +2547,18 @@
                BLI_cleanup_dir(mainvar->name, dir1);
                BLI_cleanup_dir(mainvar->name, dir2);
 
-               if(strcmp(dir1, dir2)==0)
+               if(BLI_path_cmp(dir1, dir2)==0) {
                        write_flags &= ~G_FILE_RELATIVE_REMAP;
-               else
-                       makeFilesAbsolute(mainvar, G.main->name, NULL);
+               }
+               else {
+                       if(G.relbase_valid) {
+                               /* blend may not have been saved before. Tn 
this case
+                                * we should not have any relative paths, but 
if there
+                                * is somehow, an invalid or empty G.main->name 
it will
+                                * print an error, dont try make the absolute 
in this case. */
+                               makeFilesAbsolute(mainvar, G.main->name, NULL);
+                       }
+               }
        }
 
        BLI_make_file_string(G.main->name, userfilename, 
BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_STARTUP_FILE);

Modified: trunk/blender/source/blender/editors/space_file/filelist.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/filelist.c  2011-05-18 
06:27:32 UTC (rev 36736)
+++ trunk/blender/source/blender/editors/space_file/filelist.c  2011-05-18 
06:48:52 UTC (rev 36737)
@@ -433,7 +433,7 @@
 
        // check if already exists
        if(previous_folder && previous_folder->foldername){
-               if(! strcmp(previous_folder->foldername, dir)){
+               if(BLI_path_cmp(previous_folder->foldername, dir)==0){
                        return;
                }
        }

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to