aboutsummaryrefslogtreecommitdiffstats
path: root/src/kvilib/core/KviQString.cpp
diff options
context:
space:
mode:
authorGravatar Fabio Bas2012-04-07 10:46:15 +0000
committerGravatar Fabio Bas2012-04-07 10:46:15 +0000
commit3806146c262729fbbf3e8bc38724c96dc53be458 (patch)
treea835765b50806d7f4a1feca54d7ddcca08e324af /src/kvilib/core/KviQString.cpp
parentrevamped INSTALL-MacOs.txt (diff)
downloadKVIrc-3806146c262729fbbf3e8bc38724c96dc53be458.tar.gz
KVIrc-3806146c262729fbbf3e8bc38724c96dc53be458.tar.bz2
KVIrc-3806146c262729fbbf3e8bc38724c96dc53be458.zip
fix #1264
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@6126 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/kvilib/core/KviQString.cpp')
-rw-r--r--src/kvilib/core/KviQString.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/kvilib/core/KviQString.cpp b/src/kvilib/core/KviQString.cpp
index 30557ca09..a532b2a96 100644
--- a/src/kvilib/core/KviQString.cpp
+++ b/src/kvilib/core/KviQString.cpp
@@ -1047,7 +1047,35 @@ namespace KviQString
bool matchString(const QString & szExp, const QString & szStr, bool bIsRegExp, bool bExact, bool bCs)
{
- QRegExp re(szExp,bCs ? Qt::CaseSensitive : Qt::CaseInsensitive,bIsRegExp ? QRegExp::RegExp : QRegExp::Wildcard);
+ QString szWildcard;
+
+ if(!bIsRegExp)
+ {
+ // In wildcard maching mode, QRegExp not only interprets * and ?, but also [ ]
+ // This workaround embeds square brackes in square brackets (ticket #1264)
+
+ QChar * pPtr = (QChar*)szExp.constData();
+
+ if(!pPtr)
+ return 0;
+
+ while(pPtr->unicode())
+ {
+ if((pPtr->unicode() == '[') || (pPtr->unicode() == ']'))
+ {
+ szWildcard.append("[");
+ szWildcard.append(*pPtr);
+ szWildcard.append("]");
+ } else {
+ szWildcard.append(*pPtr);
+ }
+ pPtr++;
+ }
+ } else {
+ szWildcard = szExp;
+ }
+
+ QRegExp re(szWildcard,bCs ? Qt::CaseSensitive : Qt::CaseInsensitive,bIsRegExp ? QRegExp::RegExp : QRegExp::Wildcard);
if(bExact)
return re.exactMatch(szStr);