v...@lyx.org schreef:
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
Juergen,

Ok for 1.6.2 ?

Vincent

Reply via email to