Author: vfr
Date: Mon Mar 9 20:54:47 2009
New Revision: 28746
URL: http://www.lyx.org/trac/changeset/28746
Log:
Proper fix to avoid an infinite loop with Qt4.5.
see:
http://www.qtsoftware.com/developer/faqs/why-does-qstring-indexof-qregexp-cause-a-crash-or-hang-in-qt-4.5
Modified:
lyx-devel/trunk/src/frontends/qt4/GuiLog.cpp
lyx-devel/trunk/src/frontends/qt4/LaTeXHighlighter.cpp
Modified: lyx-devel/trunk/src/frontends/qt4/GuiLog.cpp
URL:
http://www.lyx.org/trac/file/lyx-devel/trunk/src/frontends/qt4/GuiLog.cpp?rev=28746
==============================================================================
--- lyx-devel/trunk/src/frontends/qt4/GuiLog.cpp (original)
+++ lyx-devel/trunk/src/frontends/qt4/GuiLog.cpp Mon Mar 9 20:54:47 2009
@@ -68,27 +68,27 @@
{
// 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);
}
}
Modified: lyx-devel/trunk/src/frontends/qt4/LaTeXHighlighter.cpp
URL:
http://www.lyx.org/trac/file/lyx-devel/trunk/src/frontends/qt4/LaTeXHighlighter.cpp?rev=28746
==============================================================================
--- lyx-devel/trunk/src/frontends/qt4/LaTeXHighlighter.cpp (original)
+++ lyx-devel/trunk/src/frontends/qt4/LaTeXHighlighter.cpp Mon Mar 9 20:54:47
2009
@@ -35,11 +35,11 @@
{
// $ $
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 @@
// 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 @@
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 @@
// ** 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);
}
}
_______________________________________________
Cvslog mailing list
cvs...@lyx.org
http://www.lyx.org/mailman/listinfo/cvslog