diff options
author | Max Horn | 2008-09-05 20:29:03 +0000 |
---|---|---|
committer | Max Horn | 2008-09-05 20:29:03 +0000 |
commit | 0dcb30e75c79900d90874eb098fbec67ef0c703b (patch) | |
tree | 1b8f75d715be40c87c0756a54979795a97da1f6c /common | |
parent | e5c8ebf995a8500d5c99cc238f911eac43e8073d (diff) | |
download | scummvm-rg350-0dcb30e75c79900d90874eb098fbec67ef0c703b.tar.gz scummvm-rg350-0dcb30e75c79900d90874eb098fbec67ef0c703b.tar.bz2 scummvm-rg350-0dcb30e75c79900d90874eb098fbec67ef0c703b.zip |
Optimized matchString for the common case where there is a trailing * (if that is the case, abort immediately instead of scanning the rest of the string)
svn-id: r34367
Diffstat (limited to 'common')
-rw-r--r-- | common/str.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/common/str.cpp b/common/str.cpp index b2c9a7cdbf..a415e376c9 100644 --- a/common/str.cpp +++ b/common/str.cpp @@ -605,13 +605,18 @@ bool matchString(const char *str, const char *pat) { for (;;) { switch (*pat) { case '*': + // Record pattern / string possition for backtracking p = ++pat; q = str; + // If pattern ended with * -> match + if (!*pat) + return true; break; default: if (*pat != *str) { if (p) { + // No match, oops -> try to backtrack pat = p; str = ++q; if (!*str) |