aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/archive.cpp17
-rw-r--r--common/archive.h2
2 files changed, 11 insertions, 8 deletions
diff --git a/common/archive.cpp b/common/archive.cpp
index e815b781bf..4f1385f2d8 100644
--- a/common/archive.cpp
+++ b/common/archive.cpp
@@ -123,19 +123,22 @@ void SearchSet::addDirectory(const String &name, const FSNode &dir, int priority
add(name, new FSDirectory(dir, depth, flat), priority);
}
-void SearchSet::addSubDirectoriesMatching(const FSNode &directory, String pattern, bool ignoreCase, int priority) {
+void SearchSet::addSubDirectoriesMatching(const FSNode &directory, String origPattern, bool ignoreCase, int priority) {
FSList subDirs;
if (!directory.getChildren(subDirs))
return;
- String nextPattern;
- String::const_iterator sep = Common::find(pattern.begin(), pattern.end(), '/');
- if (sep != pattern.end()) {
- pattern = String(pattern.begin(), sep);
+ String nextPattern, pattern;
+ String::const_iterator sep = Common::find(origPattern.begin(), origPattern.end(), '/');
+ if (sep != origPattern.end()) {
+ pattern = String(origPattern.begin(), sep);
++sep;
- if (sep != pattern.end())
- nextPattern = String(sep, pattern.end());
+ if (sep != origPattern.end())
+ nextPattern = String(sep, origPattern.end());
+ }
+ else {
+ pattern = origPattern;
}
// TODO: The code we have for displaying all matches, which vary only in case, might
diff --git a/common/archive.h b/common/archive.h
index 39fce497c4..1cc983f77b 100644
--- a/common/archive.h
+++ b/common/archive.h
@@ -212,7 +212,7 @@ public:
*
* @see Common::matchString
*/
- void addSubDirectoriesMatching(const FSNode &directory, String pattern, bool ignoreCase, int priority = 0);
+ void addSubDirectoriesMatching(const FSNode &directory, String origPattern, bool ignoreCase, int priority = 0);
/**
* Remove an archive from the searchable set.