Assert when relative paths are passed to IO ops

This is typically an error (& hangs a few seconds on win32), best catch early.
This commit is contained in:
Campbell Barton 2015-06-18 12:37:24 +10:00
parent 03efc37a6e
commit 28c34d332f
Notes: blender-bot 2024-02-28 16:27:26 +01:00
Referenced by issue #45117, Dark dupliface objects in viewport
Referenced by pull request #118856, Fix: Relative "Temporary Files" preference cause trouble (can crash)
2 changed files with 11 additions and 0 deletions

View 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);
}

View 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);