QRegularExpression: don't use study data when getting the pattern info

Information about the pattern (number of capturing groups, newline
settings, etc.) are grabbed when the pattern is compiled the first time.

Studying (=> optimizing) is always done later, after a certain amount
of usages. In case this ever changes, add an assert.

Besides, we're not grabbing any info that require studying the pattern
first.

Change-Id: Ica15fa21f7bf13213288d7090d3396a89900078e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Giuseppe D'Angelo 2013-01-30 22:38:48 +00:00 committed by The Qt Project
parent a317ee0a6f
commit bcd04af4e8

View File

@ -979,12 +979,13 @@ void QRegularExpressionPrivate::compilePattern()
void QRegularExpressionPrivate::getPatternInfo()
{
Q_ASSERT(compiledPattern);
Q_ASSERT(studyData == 0);
pcre16_fullinfo(compiledPattern, 0, PCRE_INFO_CAPTURECOUNT, &capturingCount);
// detect the settings for the newline
unsigned long int patternNewlineSetting;
pcre16_fullinfo(compiledPattern, studyData, PCRE_INFO_OPTIONS, &patternNewlineSetting);
pcre16_fullinfo(compiledPattern, 0, PCRE_INFO_OPTIONS, &patternNewlineSetting);
patternNewlineSetting &= PCRE_NEWLINE_CR | PCRE_NEWLINE_LF | PCRE_NEWLINE_CRLF
| PCRE_NEWLINE_ANY | PCRE_NEWLINE_ANYCRLF;
if (patternNewlineSetting == 0) {