mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-06 09:37:31 +00:00
branch: change the use of QString::indexOf(RegExp) into RegExp::indexIn(QString) to avoid crashes and infinite loops with Qt4.5.
See: http://www.lyx.org/trac/changeset/28746 git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_6_X@28767 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
f86581d59d
commit
7238dc91e8
2
ANNOUNCE
2
ANNOUNCE
@ -267,6 +267,8 @@ What's new in version 1.6.2?
|
||||
- Fix a crash when an unfinished macro is edited and deleted in math
|
||||
mode (bug 5744).
|
||||
|
||||
- Fix the use of regular expressions to avoid crashes with Qt4.5.
|
||||
|
||||
- Ignore the master_buffer setting in Document>Settings if the current
|
||||
document is no real child. This fixes a crash when using the outliner
|
||||
in such files (bug 5653).
|
||||
|
@ -68,27 +68,27 @@ void LogHighlighter::highlightBlock(QString const & text)
|
||||
{
|
||||
// Info
|
||||
QRegExp exprInfo("^(Document Class:|LaTeX Font Info:|File:|Package:|Language:|Underfull|Overfull|\\(|\\\\).*$");
|
||||
int index = text.indexOf(exprInfo);
|
||||
int index = exprInfo.indexIn(text);
|
||||
while (index >= 0) {
|
||||
int length = exprInfo.matchedLength();
|
||||
setFormat(index, length, infoFormat);
|
||||
index = text.indexOf(exprInfo, index + length);
|
||||
index = exprInfo.indexIn(text, index + length);
|
||||
}
|
||||
// LaTeX Warning:
|
||||
QRegExp exprWarning("^LaTeX Warning.*$");
|
||||
index = text.indexOf(exprWarning);
|
||||
index = exprWarning.indexIn(text);
|
||||
while (index >= 0) {
|
||||
int length = exprWarning.matchedLength();
|
||||
setFormat(index, length, warningFormat);
|
||||
index = text.indexOf(exprWarning, index + length);
|
||||
index = exprWarning.indexIn(text, index + length);
|
||||
}
|
||||
// ! error
|
||||
QRegExp exprError("^!.*$");
|
||||
index = text.indexOf(exprError);
|
||||
index = exprError.indexIn(text);
|
||||
while (index >= 0) {
|
||||
int length = exprError.matchedLength();
|
||||
setFormat(index, length, errorFormat);
|
||||
index = text.indexOf(exprError, index + length);
|
||||
index = exprError.indexIn(text, index + length);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,11 +35,11 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
|
||||
{
|
||||
// $ $
|
||||
static const QRegExp exprMath("\\$[^\\$]*\\$");
|
||||
int index = text.indexOf(exprMath);
|
||||
int index = exprMath.indexIn(text);
|
||||
while (index >= 0) {
|
||||
int length = exprMath.matchedLength();
|
||||
setFormat(index, length, mathFormat);
|
||||
index = text.indexOf(exprMath, index + length);
|
||||
index = exprMath.indexIn(text, index + length);
|
||||
}
|
||||
// [ ]
|
||||
static const QRegExp exprStartDispMath("(\\\\\\[|"
|
||||
@ -67,9 +67,9 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
|
||||
// start search from 0 (for end disp math)
|
||||
// otherwise, start search from 'begin disp math'
|
||||
if (previousBlockState() != 1)
|
||||
startIndex = text.indexOf(exprStartDispMath);
|
||||
startIndex = exprStartDispMath.indexIn(text);
|
||||
while (startIndex >= 0) {
|
||||
int endIndex = text.indexOf(exprEndDispMath, startIndex);
|
||||
int endIndex = exprEndDispMath.indexIn(text, startIndex);
|
||||
int length;
|
||||
if (endIndex == -1) {
|
||||
setCurrentBlockState(1);
|
||||
@ -78,15 +78,15 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
|
||||
length = endIndex - startIndex + exprEndDispMath.matchedLength();
|
||||
}
|
||||
setFormat(startIndex, length, mathFormat);
|
||||
startIndex = text.indexOf(exprStartDispMath, startIndex + length);
|
||||
startIndex = exprStartDispMath.indexIn(text, startIndex + length);
|
||||
}
|
||||
// \whatever
|
||||
static const QRegExp exprKeyword("\\\\[A-Za-z]+");
|
||||
index = text.indexOf(exprKeyword);
|
||||
index = exprKeyword.indexIn(text);
|
||||
while (index >= 0) {
|
||||
int length = exprKeyword.matchedLength();
|
||||
setFormat(index, length, keywordFormat);
|
||||
index = text.indexOf(exprKeyword, index + length);
|
||||
index = exprKeyword.indexIn(text, index + length);
|
||||
}
|
||||
// %comment
|
||||
// Treat a line as a comment starting at a percent sign
|
||||
@ -95,23 +95,23 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
|
||||
// ** an even number of backslashes
|
||||
// ** any character other than a backslash
|
||||
QRegExp exprComment("(?:^|[^\\\\])(?:\\\\\\\\)*(%).*$");
|
||||
text.indexOf(exprComment);
|
||||
exprComment.indexIn(text);
|
||||
index = exprComment.pos(1);
|
||||
while (index >= 0) {
|
||||
int const length = exprComment.matchedLength()
|
||||
- (index - exprComment.pos(0));
|
||||
setFormat(index, length, commentFormat);
|
||||
text.indexOf(exprComment, index + length);
|
||||
exprComment.indexIn(text, index + length);
|
||||
index = exprComment.pos(1);
|
||||
}
|
||||
// <LyX Warning: ...>
|
||||
QString lyxwarn = qt_("LyX Warning: ");
|
||||
QRegExp exprWarning("<" + lyxwarn + "[^<]*>");
|
||||
index = text.indexOf(exprWarning);
|
||||
index = exprWarning.indexIn(text);
|
||||
while (index >= 0) {
|
||||
int length = exprWarning.matchedLength();
|
||||
setFormat(index, length, warningFormat);
|
||||
index = text.indexOf(exprWarning, index + length);
|
||||
index = exprWarning.indexIn(text, index + length);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -210,6 +210,8 @@ What's new
|
||||
|
||||
- Fix a crash when an unfinished macro is edited and deleted in math
|
||||
mode (bug 5744).
|
||||
|
||||
- Fix the use of regular expressions to avoid crashes with Qt4.5.
|
||||
|
||||
- Ignore the master_buffer setting in Document>Settings if the current
|
||||
document is no real child. This fixes a crash when using the outliner
|
||||
|
Loading…
Reference in New Issue
Block a user