diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2012-04-23 16:29:18 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-24 14:39:38 +0200 |
commit | c1623a0d42c9869e5a1d04081e7660722a863de5 (patch) | |
tree | 17a58be3a4c80b143add805b7ff8218daab61106 /src/xmlpatterns/functions | |
parent | c18f589a757b2c4cb8c5e66a92f34ac005223cfe (diff) | |
download | qtxmlpatterns-c1623a0d42c9869e5a1d04081e7660722a863de5.tar.gz |
Don't use the QRegExp methods that modify the object
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: I2c4d5f4b60d6b3569568103cd7107cd2adaa3ae8
Reviewed-by: Giuseppe D'Angelo <dangelog@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'src/xmlpatterns/functions')
-rw-r--r-- | src/xmlpatterns/functions/qpatternmatchingfns.cpp | 6 | ||||
-rw-r--r-- | src/xmlpatterns/functions/qpatternplatform.cpp | 2 | ||||
-rw-r--r-- | src/xmlpatterns/functions/qpatternplatform_p.h | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/src/xmlpatterns/functions/qpatternmatchingfns.cpp b/src/xmlpatterns/functions/qpatternmatchingfns.cpp index 41ffe54..27c7dd4 100644 --- a/src/xmlpatterns/functions/qpatternmatchingfns.cpp +++ b/src/xmlpatterns/functions/qpatternmatchingfns.cpp @@ -59,7 +59,7 @@ MatchesFN::MatchesFN() : PatternPlatform(2) Item MatchesFN::evaluateSingleton(const DynamicContext::Ptr &context) const { - const QRegExp regexp(pattern(context)); + QRegExp regexp(pattern(context)); QString input; const Item arg(m_operands.first()->evaluateSingleton(context)); @@ -75,7 +75,7 @@ ReplaceFN::ReplaceFN() : PatternPlatform(3) Item ReplaceFN::evaluateSingleton(const DynamicContext::Ptr &context) const { - const QRegExp regexp(pattern(context)); + QRegExp regexp(pattern(context)); QString input; const Item arg(m_operands.first()->evaluateSingleton(context)); @@ -219,7 +219,7 @@ Item::Iterator::Ptr TokenizeFN::evaluateSequence(const DynamicContext::Ptr &cont if(input.isEmpty()) return CommonValues::emptyIterator; - const QRegExp regExp(pattern(context)); + QRegExp regExp(pattern(context)); const QStringList result(input.split(regExp, QString::KeepEmptyParts)); return makeItemMappingIterator<Item>(ConstPtr(this), diff --git a/src/xmlpatterns/functions/qpatternplatform.cpp b/src/xmlpatterns/functions/qpatternplatform.cpp index 08dc2f1..e9bbfbb 100644 --- a/src/xmlpatterns/functions/qpatternplatform.cpp +++ b/src/xmlpatterns/functions/qpatternplatform.cpp @@ -115,7 +115,7 @@ PatternPlatform::PatternPlatform(const qint8 flagsPosition) : m_compiledParts(No { } -const QRegExp PatternPlatform::pattern(const DynamicContext::Ptr &context) const +QRegExp PatternPlatform::pattern(const DynamicContext::Ptr &context) const { if(m_compiledParts == FlagsAndPattern) /* This is the most common case. */ { diff --git a/src/xmlpatterns/functions/qpatternplatform_p.h b/src/xmlpatterns/functions/qpatternplatform_p.h index ede3c4e..4a7f087 100644 --- a/src/xmlpatterns/functions/qpatternplatform_p.h +++ b/src/xmlpatterns/functions/qpatternplatform_p.h @@ -113,7 +113,7 @@ namespace QPatternist * settings its flags, and everything else required for getting it ready to use. If an error * occurs, an appropriate error is raised via @p context. */ - const QRegExp pattern(const DynamicContext::Ptr &context) const; + QRegExp pattern(const DynamicContext::Ptr &context) const; /** * @returns the number of captures, also called parenthesized sub-expressions, the pattern has. |