Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2021-11-01 05:09:02 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-11-01 05:11:48 +0300
commita0633e2484f21c9f80842c10b46b3af98b54d25a (patch)
treeb19b840f0eb683a9cb371cc5b1f275056db05a03 /source/blender/editors/space_file
parentd4d38e8a34e59c8762034073b084ed3c5ee09af8 (diff)
Fix crash when "HOME" environment variable isn't defined
Accessing the default directory in the file selector would crash if HOME was undefined. Add BKE_appdir_folder_default_or_root which never returns NULL.
Diffstat (limited to 'source/blender/editors/space_file')
-rw-r--r--source/blender/editors/space_file/file_ops.c6
-rw-r--r--source/blender/editors/space_file/fsmenu.c19
2 files changed, 14 insertions, 11 deletions
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c
index f647e1d4e4f..a83e1974baf 100644
--- a/source/blender/editors/space_file/file_ops.c
+++ b/source/blender/editors/space_file/file_ops.c
@@ -2463,12 +2463,14 @@ static void file_expand_directory(bContext *C)
if (BLI_path_is_rel(params->dir)) {
/* Use of 'default' folder here is just to avoid an error message on '//' prefix. */
BLI_path_abs(params->dir,
- G.relbase_valid ? BKE_main_blendfile_path(bmain) : BKE_appdir_folder_default());
+ G.relbase_valid ? BKE_main_blendfile_path(bmain) :
+ BKE_appdir_folder_default_or_root());
}
else if (params->dir[0] == '~') {
char tmpstr[sizeof(params->dir) - 1];
BLI_strncpy(tmpstr, params->dir + 1, sizeof(tmpstr));
- BLI_join_dirfile(params->dir, sizeof(params->dir), BKE_appdir_folder_default(), tmpstr);
+ BLI_path_join(
+ params->dir, sizeof(params->dir), BKE_appdir_folder_default_or_root(), tmpstr, NULL);
}
else if (params->dir[0] == '\0')
diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c
index 091c2d5f434..97f22ca7d89 100644
--- a/source/blender/editors/space_file/fsmenu.c
+++ b/source/blender/editors/space_file/fsmenu.c
@@ -769,21 +769,22 @@ void fsmenu_read_system(struct FSMenu *fsmenu, int read_bookmarks)
FS_INSERT_LAST);
const char *home = BLI_getenv("HOME");
-
+ if (home) {
# define FS_MACOS_PATH(path, name, icon) \
BLI_snprintf(line, sizeof(line), path, home); \
fsmenu_insert_entry(fsmenu, FS_CATEGORY_OTHER, line, name, icon, FS_INSERT_LAST);
- FS_MACOS_PATH("%s/", NULL, ICON_HOME)
- FS_MACOS_PATH("%s/Desktop/", N_("Desktop"), ICON_DESKTOP)
- FS_MACOS_PATH("%s/Documents/", N_("Documents"), ICON_DOCUMENTS)
- FS_MACOS_PATH("%s/Downloads/", N_("Downloads"), ICON_IMPORT)
- FS_MACOS_PATH("%s/Movies/", N_("Movies"), ICON_FILE_MOVIE)
- FS_MACOS_PATH("%s/Music/", N_("Music"), ICON_FILE_SOUND)
- FS_MACOS_PATH("%s/Pictures/", N_("Pictures"), ICON_FILE_IMAGE)
- FS_MACOS_PATH("%s/Library/Fonts/", N_("Fonts"), ICON_FILE_FONT)
+ FS_MACOS_PATH("%s/", NULL, ICON_HOME)
+ FS_MACOS_PATH("%s/Desktop/", N_("Desktop"), ICON_DESKTOP)
+ FS_MACOS_PATH("%s/Documents/", N_("Documents"), ICON_DOCUMENTS)
+ FS_MACOS_PATH("%s/Downloads/", N_("Downloads"), ICON_IMPORT)
+ FS_MACOS_PATH("%s/Movies/", N_("Movies"), ICON_FILE_MOVIE)
+ FS_MACOS_PATH("%s/Music/", N_("Music"), ICON_FILE_SOUND)
+ FS_MACOS_PATH("%s/Pictures/", N_("Pictures"), ICON_FILE_IMAGE)
+ FS_MACOS_PATH("%s/Library/Fonts/", N_("Fonts"), ICON_FILE_FONT)
# undef FS_MACOS_PATH
+ }
/* Get mounted volumes better method OSX 10.6 and higher, see:
* https://developer.apple.com/library/mac/#documentation/CoreFOundation/Reference/CFURLRef/Reference/reference.html