From d4be84a630e30a7c7a1f1ed5a832477f87ebb1fb Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sun, 19 Oct 2014 01:52:48 -0300 Subject: [PATCH] Fixed love.filesystem.unmount. --HG-- branch : minor --- src/modules/filesystem/physfs/Filesystem.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/modules/filesystem/physfs/Filesystem.cpp b/src/modules/filesystem/physfs/Filesystem.cpp index f51807d33..021fc5783 100644 --- a/src/modules/filesystem/physfs/Filesystem.cpp +++ b/src/modules/filesystem/physfs/Filesystem.cpp @@ -269,9 +269,7 @@ bool Filesystem::mount(const char *archive, const char *mountpoint, bool appendT auto it = std::find(allowedMountPaths.begin(), allowedMountPaths.end(), archive); if (it != allowedMountPaths.end()) - { realPath = *it; - } else if (isFused() && sourceBase.compare(archive) == 0) { // Special case: if the game is fused and the archive is the source's @@ -313,7 +311,12 @@ bool Filesystem::unmount(const char *archive) std::string realPath; std::string sourceBase = getSourceBaseDirectory(); - if (isFused() && sourceBase.compare(archive) == 0) + // Check whether the given archive path is in the list of allowed full paths. + auto it = std::find(allowedMountPaths.begin(), allowedMountPaths.end(), archive); + + if (it != allowedMountPaths.end()) + realPath = *it; + else if (isFused() && sourceBase.compare(archive) == 0) { // Special case: if the game is fused and the archive is the source's // base directory, unmount it even though it's outside of the save dir.