QRegExp: fix usage of uninitialized values
A (probable) typo was causing the code dealing with anchors
to use uninitialized values. This used to work by chance, but was
indeed detected by Valgrind f.i. when running tst_qregexp --
the indexIn test on anc11 data reported:
==3015== Conditional jump or move depends on uninitialised value(s)
==3015== at 0x514B4EA: PeppeQt::QRegExpMatchState::testAnchor(int, int, int const*) (qregexp.cpp:1813)
[...]
==3015== Uninitialised value was created by a stack allocation
==3015== at 0x514B3EB: PeppeQt::QRegExpMatchState::testAnchor(int, int, int const*) (qregexp.cpp:1803)
Fixing the code also makes the aforementioned test to succeed.
Change-Id: If7b3e518c1bbfcf12573d2637c33ef2eca27c4d5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
bb10
parent
7968543bb0
commit
281771ee20
|
|
@ -1839,7 +1839,7 @@ bool QRegExpMatchState::testAnchor(int i, int a, const int *capBegin)
|
|||
QRegExpMatchState matchState;
|
||||
matchState.prepareForMatch(ahead[j]->eng);
|
||||
matchState.match(in + pos + i, len - pos - i, 0,
|
||||
true, true, matchState.caretPos - matchState.pos - i);
|
||||
true, true, caretPos - pos - i);
|
||||
if ((matchState.captured[0] == 0) == ahead[j]->neg)
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -571,7 +571,6 @@ void tst_QRegExp::indexIn()
|
|||
int mylen = rx.matchedLength();
|
||||
QStringList mycaps = rx.capturedTexts();
|
||||
|
||||
QEXPECT_FAIL("anc11", "QRegExp has bugs with anchors inside lookaheads", Abort);
|
||||
QCOMPARE( mypos, pos );
|
||||
QCOMPARE( mylen, len );
|
||||
if ( caps.size() > 1 && caps[1] != "IGNORE ME" ) {
|
||||
|
|
@ -625,7 +624,6 @@ void tst_QRegExp::lastIndexIn()
|
|||
QStringList mycaps = rx.capturedTexts();
|
||||
|
||||
if ( mypos <= pos || pos == -1 ) {
|
||||
QEXPECT_FAIL("anc11", "QRegExp has bugs with anchors inside lookaheads", Abort);
|
||||
QCOMPARE( mypos, pos );
|
||||
QCOMPARE( mylen, len );
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue