From 4d28b0230364d610fdc94b3d89b65400df05baf1 Mon Sep 17 00:00:00 2001 From: Eunchurn Park Date: Wed, 31 Dec 2025 02:23:10 +0900 Subject: [PATCH] Fix file browser failing to navigate into subdirectories with non-ASCII names - Enable UTF-8 long file names in SdFat (USE_UTF8_LONG_NAMES=1) - Add directory validation before iterating files - Add rewindDirectory() call for stability --- platformio.ini | 2 ++ src/activities/reader/FileSelectionActivity.cpp | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/platformio.ini b/platformio.ini index dcec29a..e946f77 100644 --- a/platformio.ini +++ b/platformio.ini @@ -26,6 +26,8 @@ build_flags = -DXML_GE=0 -DXML_CONTEXT_BYTES=1024 -std=c++2a +# Enable UTF-8 long file names in SdFat + -DUSE_UTF8_LONG_NAMES=1 ; Board configuration board_build.flash_mode = dio diff --git a/src/activities/reader/FileSelectionActivity.cpp b/src/activities/reader/FileSelectionActivity.cpp index 4f4ed9d..4510f9b 100644 --- a/src/activities/reader/FileSelectionActivity.cpp +++ b/src/activities/reader/FileSelectionActivity.cpp @@ -30,7 +30,15 @@ void FileSelectionActivity::taskTrampoline(void* param) { void FileSelectionActivity::loadFiles() { files.clear(); selectorIndex = 0; + auto root = SdMan.open(basepath.c_str()); + if (!root || !root.isDirectory()) { + if (root) root.close(); + return; + } + + root.rewindDirectory(); + char name[128]; for (auto file = root.openNextFile(); file; file = root.openNextFile()) { file.getName(name, sizeof(name));