diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 65365aa8a..29e42e2ad 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -638,9 +638,9 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { return new Promise(function next(resolve, reject) { timeSlotManager.reset(); - var stop, operation, i, ii, cs; + var stop, operation = {}, i, ii, cs; while (!(stop = timeSlotManager.check()) && - (operation = preprocessor.read())) { + preprocessor.read(operation)) { var args = operation.args; var fn = operation.fn; @@ -894,7 +894,6 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); - var operation; var textState; function newTextChunk() { @@ -1032,9 +1031,9 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { return new Promise(function next(resolve, reject) { timeSlotManager.reset(); - var stop; + var stop, operation = {}; while (!(stop = timeSlotManager.check()) && - (operation = preprocessor.read())) { + (preprocessor.read(operation))) { textState = stateManager.state; var fn = operation.fn; var args = operation.args; @@ -2099,12 +2098,12 @@ var EvaluatorPreprocessor = (function EvaluatorPreprocessorClosure() { return this.stateManager.stateStack.length; }, - read: function EvaluatorPreprocessor_read() { + read: function EvaluatorPreprocessor_read(operation) { var args = []; while (true) { var obj = this.parser.getObj(); if (isEOF(obj)) { - return null; // no more commands + return false; // no more commands } if (!isCmd(obj)) { // argument @@ -2155,7 +2154,9 @@ var EvaluatorPreprocessor = (function EvaluatorPreprocessorClosure() { // TODO figure out how to type-check vararg functions this.preprocessCommand(fn, args); - return { fn: fn, args: args }; + operation.fn = fn; + operation.args = args; + return true; } },