From: Thiago Macieira Date: Mon, 23 Apr 2012 15:47:03 +0000 (+0200) Subject: Don't use the QRegExp methods that modify the object [Linguist] X-Git-Tag: accepted/tizen/20131212.181521~327 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e68cbe6a7d61611dc048edd82cfba716b443a474;p=platform%2Fupstream%2Fqttools.git Don't use the QRegExp methods that modify the object [Linguist] QRegExp matching methods modify the object, which we don't want to. In particular, when we receive a QRegExp from the user or we store in a context that might require thread-safety, make sure we make a copy before using it. QRegularExpression has no such shortcoming. Task-number: QTBUG-25064 Change-Id: I181d37fd98b00550dd98d418a33183a4bde0c532 Reviewed-by: Oswald Buddenhagen --- diff --git a/src/linguist/shared/profileevaluator.cpp b/src/linguist/shared/profileevaluator.cpp index 6abb4d3..75c7aef 100644 --- a/src/linguist/shared/profileevaluator.cpp +++ b/src/linguist/shared/profileevaluator.cpp @@ -2544,7 +2544,7 @@ ProStringList ProFileEvaluator::Private::evaluateExpandFunction( } r.detach(); // Keep m_tmp out of QRegExp's cache - const QRegExp regex(r, Qt::CaseSensitive, QRegExp::Wildcard); + QRegExp regex(r, Qt::CaseSensitive, QRegExp::Wildcard); for (int d = 0; d < dirs.count(); d++) { QString dir = dirs[d]; QDir qdir(pfx + dir); @@ -2566,7 +2566,7 @@ ProStringList ProFileEvaluator::Private::evaluateExpandFunction( if(args.count() != 3 ) { evalError(fL1S("replace(var, before, after) requires three arguments")); } else { - const QRegExp before(args.at(1).toQString()); + QRegExp before(args.at(1).toQString()); const QString &after(args.at(2).toQString(m_tmp2)); foreach (const ProString &val, values(map(args.at(0)))) { QString rstr = val.toQString(m_tmp1); diff --git a/src/linguist/shared/ts.cpp b/src/linguist/shared/ts.cpp index 1f3d7de..28fa148 100644 --- a/src/linguist/shared/ts.cpp +++ b/src/linguist/shared/ts.cpp @@ -502,7 +502,7 @@ static QString evilBytes(const QString& str, } static void writeExtras(QTextStream &t, const char *indent, - const TranslatorMessage::ExtraData &extras, const QRegExp &drops) + const TranslatorMessage::ExtraData &extras, QRegExp drops) { for (Translator::ExtraData::ConstIterator it = extras.begin(); it != extras.end(); ++it) { if (!drops.exactMatch(it.key())) { diff --git a/src/linguist/shared/xliff.cpp b/src/linguist/shared/xliff.cpp index c20c0fb..fdc96bf 100644 --- a/src/linguist/shared/xliff.cpp +++ b/src/linguist/shared/xliff.cpp @@ -192,7 +192,7 @@ static QString protect(const QString &str, bool makePhs = true) static void writeExtras(QTextStream &ts, int indent, - const TranslatorMessage::ExtraData &extras, const QRegExp &drops) + const TranslatorMessage::ExtraData &extras, QRegExp drops) { for (Translator::ExtraData::ConstIterator it = extras.begin(); it != extras.end(); ++it) { if (!drops.exactMatch(it.key())) {