mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-24 03:23:10 +00:00
Merge pull request #3133 from overleaf/hb-fix-bibtex-error-crash
Stop bib log parser after 500 iterations per parser GitOrigin-RevId: 415624c20154b4fd4054f166179cd455a7cc2d4d
This commit is contained in:
parent
7f5ac7a932
commit
b48b937f26
2 changed files with 13 additions and 4 deletions
|
@ -615,7 +615,7 @@ App.controller('PdfController', function(
|
|||
function processBiber(log) {
|
||||
const { errors, warnings } = BibLogParser.parse(log, {})
|
||||
const all = [].concat(errors, warnings)
|
||||
accumulateResults({ type: 'BibTeX', all, errors, warnings })
|
||||
accumulateResults({ type: 'BibTeX:', all, errors, warnings })
|
||||
}
|
||||
|
||||
// output the results
|
||||
|
|
|
@ -23,10 +23,19 @@ define(function() {
|
|||
iterationCount = 0;
|
||||
while (match = re.exec(text)) {
|
||||
iterationCount += 1;
|
||||
if (iterationCount >= 10000) {
|
||||
return result;
|
||||
}
|
||||
newEntry = process(match);
|
||||
|
||||
// Too many log entries can cause browser crashes
|
||||
// Construct a too many files error from the last match
|
||||
const maxErrors = 100
|
||||
if (iterationCount >= maxErrors) {
|
||||
const level = newEntry.level + "s"
|
||||
newEntry.message = `Over ${maxErrors} ${level} returned. Download raw logs to see full list`;
|
||||
newEntry.line = undefined;
|
||||
result.unshift(newEntry)
|
||||
return [result, ""];
|
||||
}
|
||||
|
||||
result.push(newEntry);
|
||||
text = (match.input.slice(0, match.index)) + (match.input.slice(match.index + match[0].length + 1, match.input.length));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue