commit 0a6120cb7f940bc010efa9f2873afaeee6381a9e
Author: Scott Kostyshak <skost...@lyx.org>
Date:   Sat Feb 21 00:00:51 2015 -0500

    Improve log scanner to correctly report error
    
    When scanning the LaTeX log, previously we only looked ahead 10 lines
    after a "!" line and if we did not find a line number we did not count
    an error. This lead to the problem that templates/ACM-sigplan.lyx was
    showing a successful export and the PDF was shown (it is still
    created despite the error). Now that the exit code of the latex
    command is checked (as of the previous commit), an error is correctly
    given, but by parsing the log better with this commit, a more
    informative error is given.
    
    Increasing the look-ahead to 15 lines leads to correct parsing of
    the ACM-sigplan log. The excerpt in the log file where there are more
    than 10 lines in-between the "!" line and the line number is below:
    
    ! Undefined control sequence.
    \@toappear ...ent http://dx.doi.org/10.1145/\@doi
    
    <argument> ...n is removed.]\par \else \@toappear
                                                      \fi \if \@reprint
    \noinden...
    
    \@begin@tempboxa ...mpboxa #1{\color@begingroup #2
                                                      \color@endgroup }\def
    \wid...
    
    \@iiiparbox ...tempdima \@parboxrestore #5\@@par }
                                                      \ifx \relax #2\else
    \setle...
    
    \@copyrightspace ...planconf@finalpage}.\par \fi }
                                                      }\end@float
    \maketitle ... \@copyrightwanted \@copyrightspace
                                                      \fi
    l.34 \maketitle
    
    Another example is posted here:
    
http://tex.stackexchange.com/questions/231655/lyx-cannot-output-to-pdflatex-for-a-specific-file

diff --git a/src/LaTeX.cpp b/src/LaTeX.cpp
index 588ca52..e4f8b4b 100644
--- a/src/LaTeX.cpp
+++ b/src/LaTeX.cpp
@@ -825,7 +825,10 @@ int LaTeX::scanLogFile(TeXErrors & terr)
                                if (!getline(ifs, tmp))
                                        break;
                                tmp = rtrim(tmp, "\r");
-                               if (++count > 10)
+                               // 15 is somewhat arbitrarily chosen, based on 
practice.
+                               // We used 10 for 14 years and increased it to 
15 when we
+                               // saw one case.
+                               if (++count > 15)
                                        break;
                        } while (!prefixIs(tmp, "l."));
                        if (prefixIs(tmp, "l.")) {

Reply via email to