From 4b92c4bf4be26cc41c55e9782785fbd8acafd98a Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Wed, 12 Jun 2013 00:54:46 -0300 Subject: [PATCH] Fixed old save directories not being removed from the filesystem search path properly when setIdentity is called --- src/modules/filesystem/physfs/Filesystem.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/modules/filesystem/physfs/Filesystem.cpp b/src/modules/filesystem/physfs/Filesystem.cpp index 70c6e97e9..e31ca96c0 100644 --- a/src/modules/filesystem/physfs/Filesystem.cpp +++ b/src/modules/filesystem/physfs/Filesystem.cpp @@ -84,6 +84,8 @@ bool Filesystem::setIdentity(const char *ident) if (!isInited) return false; + std::string old_save_path = save_path_full; + // Store the save directory. save_identity = std::string(ident); @@ -104,7 +106,13 @@ bool Filesystem::setIdentity(const char *ident) // Try to add the save directory to the search path. // (No error on fail, it means that the path doesn't exist). - PHYSFS_addToSearchPath(save_path_full.c_str(), 0); + if (PHYSFS_addToSearchPath(save_path_full.c_str(), 0)) + { + // We don't want old read-only save paths to accumulate when we set a + // new identity. + if (old_save_path.compare(save_path_full) != 0) + PHYSFS_removeFromSearchPath(old_save_path.c_str()); + } return true; }