From 28c34d332f941259de6775af57758609ee7c92e9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 18 Jun 2015 12:37:24 +1000 Subject: [PATCH] Assert when relative paths are passed to IO ops This is typically an error (& hangs a few seconds on win32), best catch early. --- source/blender/blenlib/intern/fileops.c | 10 ++++++++++ source/blender/blenlib/intern/storage.c | 1 + 2 files changed, 11 insertions(+) diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c index d6fe5e52b95..c3e889842c1 100644 --- a/source/blender/blenlib/intern/fileops.c +++ b/source/blender/blenlib/intern/fileops.c @@ -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); } diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index 7b7733dea37..7fdf6ec8101 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -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);