Assert when relative paths are passed to IO ops
authorCampbell Barton <ideasman42@gmail.com>
Thu, 18 Jun 2015 02:37:24 +0000 (12:37 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 18 Jun 2015 02:49:10 +0000 (12:49 +1000)
This is typically an error (& hangs a few seconds on win32), best catch early.

source/blender/blenlib/intern/fileops.c
source/blender/blenlib/intern/storage.c

index d6fe5e52b9590870f32422fa419b608338fb8462..c3e889842c122c954575c8844f7692c3b9f32535 100644 (file)
@@ -657,21 +657,29 @@ static int delete_single_file(const char *from, const char *UNUSED(to))
 
 FILE *BLI_fopen(const char *filename, const char *mode)
 {
+       BLI_assert(!BLI_path_is_rel(filename));
+
        return fopen(filename, mode);
 }
 
 void *BLI_gzopen(const char *filename, const char *mode)
 {
+       BLI_assert(!BLI_path_is_rel(filename));
+
        return gzopen(filename, mode);
 }
 
 int BLI_open(const char *filename, int oflag, int pmode)
 {
+       BLI_assert(!BLI_path_is_rel(filename));
+
        return open(filename, oflag, pmode);
 }
 
 int   BLI_access(const char *filename, int mode)
 {
+       BLI_assert(!BLI_path_is_rel(filename));
+
        return access(filename, mode);
 }
 
@@ -682,6 +690,8 @@ int   BLI_access(const char *filename, int mode)
  */
 int BLI_delete(const char *file, bool dir, bool recursive)
 {
+       BLI_assert(!BLI_path_is_rel(file));
+
        if (recursive) {
                return recursive_operation(file, NULL, NULL, delete_single_file, delete_callback_post);
        }
index 7b7733dea373eafa65b535489cf89779e031e41c..7fdf6ec8101cd0a0b63c84a8a7acd302a6d44df7 100644 (file)
@@ -227,6 +227,7 @@ int BLI_exists(const char *name)
 #else
        struct stat st;
        BLI_assert(name);
+       BLI_assert(!BLI_path_is_rel(name));
        if (stat(name, &st)) return(0);
 #endif
        return(st.st_mode);