diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-02-17 23:59:40 -0600 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-02-17 23:59:48 -0600 |
| commit | 480a57cf037a46f176128e6c94aa5616fcf704a3 (patch) | |
| tree | 35be94099e2669f518c623acdf8fe23ee82e55a8 /libs/usvfs/src/shared | |
| parent | 91e1d7f9f03ab3fd77cee94c1eac2abf89254e50 (diff) | |
Fix Wine prefix deployment, INI handling, and data directory paths
- Fix data directory path to use ~/.var/app/com.fluorine.manager consistently
(was ~/.local/share/fluorine in committed code)
- Fix VFS helper path in fuseconnector.cpp to use fluorineDataDir()
- Fix localAppFolder() to resolve Wine prefix AppData/Local on Linux
instead of returning XDG ~/.local/share
- Add localAppName() virtual method for correct AppData folder mapping
(Enderal→"enderal", Nehrim→"Oblivion")
- Fix mergeTweak() to use direct INI parser instead of QSettings which
corrupts backslashes and URL-encodes spaces in keys
- Make resolveWineDataDirName() more robust with existence checks and
fallback chain (documentsDirectory → gameShortName → gameName)
- Add comprehensive debug logging throughout Wine prefix deployment
- Fix INI case handling: copy instead of symlink for case-mismatched INIs,
ensure both proper-case and lowercase aliases exist
- Remove native build script (Flatpak only)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'libs/usvfs/src/shared')
| -rw-r--r-- | libs/usvfs/src/shared/directory_tree.cpp | 4 | ||||
| -rw-r--r-- | libs/usvfs/src/shared/directory_tree.h | 21 |
2 files changed, 25 insertions, 0 deletions
diff --git a/libs/usvfs/src/shared/directory_tree.cpp b/libs/usvfs/src/shared/directory_tree.cpp index 34cc797..33d7ae1 100644 --- a/libs/usvfs/src/shared/directory_tree.cpp +++ b/libs/usvfs/src/shared/directory_tree.cpp @@ -34,6 +34,10 @@ fs::path::iterator nextIter(const fs::path::iterator& iter, void advanceIter(fs::path::iterator& iter, const fs::path::iterator& end) { + if (iter == end) { + return; + } + ++iter; while (iter != end && (iter->wstring() == L"/" || iter->wstring() == L"\\" || iter->wstring() == L".")) diff --git a/libs/usvfs/src/shared/directory_tree.h b/libs/usvfs/src/shared/directory_tree.h index f82187f..1712071 100644 --- a/libs/usvfs/src/shared/directory_tree.h +++ b/libs/usvfs/src/shared/directory_tree.h @@ -327,6 +327,9 @@ public: NodePtrT findNode(const fs::path& path) { fs::path::iterator iter = path.begin(); + if (iter == path.end()) { + return NodePtrT(); + } return findNode(path, iter); } @@ -338,6 +341,9 @@ public: const NodePtrT findNode(const fs::path& path) const { fs::path::iterator iter = path.begin(); + if (iter == path.end()) { + return NodePtrT(); + } return findNode(path, iter); } @@ -350,6 +356,9 @@ public: void visitPath(const fs::path& path, const VisitorFunction& visitor) const { fs::path::iterator iter = path.begin(); + if (iter == path.end()) { + return; + } visitPath(path, iter, visitor); } @@ -526,6 +535,10 @@ public: NodePtrT findNode(const fs::path& name, fs::path::iterator& iter) { + if (iter == name.end()) { + return NodePtrT(); + } + std::string l = iter->string(); auto subNode = m_Nodes.find(iter->string()); advanceIter(iter, name.end()); @@ -548,6 +561,10 @@ public: const NodePtrT findNode(const fs::path& name, fs::path::iterator& iter) const { + if (iter == name.end()) { + return NodePtrT(); + } + auto subNode = m_Nodes.find(iter->string()); advanceIter(iter, name.end()); @@ -570,6 +587,10 @@ public: void visitPath(const fs::path& path, fs::path::iterator& iter, const VisitorFunction& visitor) const { + if (iter == path.end()) { + return; + } + auto subNode = m_Nodes.find(iter->string()); if (subNode != m_Nodes.end()) { |
