diff --git a/src/util/gui/file-select.c b/src/util/gui/file-select.c index e88eee5a7..8e40372e0 100644 --- a/src/util/gui/file-select.c +++ b/src/util/gui/file-select.c @@ -26,6 +26,10 @@ static void _upDirectory(char* currentPath) { if (!end) { return; } + if (end == currentPath) { + end[1] = '\0'; + return; + } end[0] = '\0'; if (end[1]) { return; @@ -85,7 +89,12 @@ bool selectFile(const struct GUIParams* params, const char* basePath, char* outP return false; } if (newInput & (1 << GUI_INPUT_SELECT)) { - snprintf(currentPath, sizeof(currentPath), "%s%c%s", currentPath, '/', *FileListGetPointer(¤tFiles, fileIndex)); + size_t len = strlen(currentPath); + const char* sep = PATH_SEP; + if (currentPath[len - 1] == *sep) { + sep = ""; + } + snprintf(currentPath, sizeof(currentPath), "%s%s%s", currentPath, sep, *FileListGetPointer(¤tFiles, fileIndex)); if (!_refreshDirectory(currentPath, ¤tFiles)) { strncpy(outPath, currentPath, outLen); return true;