]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeX.cpp
Fix typo.
[lyx.git] / src / LaTeX.cpp
index 55e31ec1c1a849e2392db45343bdbf3ebf62f7af..6063d807196c92f6a16dde7833e33b507c38aec3 100644 (file)
@@ -148,6 +148,10 @@ void LaTeX::removeAuxiliaryFiles() const
        FileName const aux(changeExtension(file.absFileName(), ".aux"));
        aux.removeFile();
 
+       // Also remove the .out file (e.g. hyperref bookmarks) (#9963)
+       FileName const out(changeExtension(file.absFileName(), ".out"));
+       out.removeFile();
+
        // Remove the output file, which is often generated even if error
        output_file.removeFile();
 }
@@ -232,12 +236,13 @@ int LaTeX::run(TeXErrors & terr)
        LYXERR(Debug::LATEX, "Run #" << count);
        message(runMessage(count));
 
-       int const exit_code = startscript();
+       int exit_code = startscript();
 
        scanres = scanLogFile(terr);
        if (scanres & ERROR_RERUN) {
                LYXERR(Debug::LATEX, "Rerunning LaTeX");
-               startscript();
+               terr.clearErrors();
+               exit_code = startscript();
                scanres = scanLogFile(terr);
        }
 
@@ -407,8 +412,12 @@ int LaTeX::run(TeXErrors & terr)
        // Write the dependencies to file.
        head.write(depfile);
 
-       if (exit_code)
+       if (exit_code) {
+               // add flag here, just before return, instead of when exit_code
+               // is defined because scanres is sometimes overwritten above
+               // (e.g. rerun)
                scanres |= NONZERO_ERROR;
+       }
 
        LYXERR(Debug::LATEX, "Done.");
 
@@ -875,14 +884,22 @@ int LaTeX::scanLogFile(TeXErrors & terr)
                        } else if (contains(token, "That makes 100 errors")) {
                                // More than 100 errors were reprted
                                retval |= TOO_MANY_ERRORS;
-                       } else if (prefixIs(token, "!pdfTeX error:")){
+                       } else if (prefixIs(token, "!pdfTeX error:")) {
                                // otherwise we dont catch e.g.:
                                // !pdfTeX error: pdflatex (file feyn10): Font feyn10 at 600 not found
                                retval |= ERRORS;
-                                       terr.insertError(0,
-                                                        from_local8bit("pdfTeX Error"),
-                                                        from_local8bit(token),
-                                                        child_name);
+                               terr.insertError(0,
+                                                from_local8bit("pdfTeX Error"),
+                                                from_local8bit(token),
+                                                child_name);
+                       } else if (prefixIs(token, "Missing character: There is no ")) {
+                               // XeTeX/LuaTeX error about missing glyph in selected font
+                               // (bug 9610)
+                               retval |= LATEX_ERROR;
+                               terr.insertError(0,
+                                                from_local8bit("Missing glyphs!"),
+                                                from_local8bit(token),
+                                                child_name);
                        }
                }
        }