diff --git a/src/core/evaluator.js b/src/core/evaluator.js index be26159ae..ed137f805 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -658,6 +658,10 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { } // eagerly compile XForm objects var name = args[0].name; + if (!name) { + warn('XObject must be referred to by name.'); + continue; + } if (imageCache[name] !== undefined) { operatorList.addOp(imageCache[name].fn, imageCache[name].args); args = null; diff --git a/test/unit/evaluator_spec.js b/test/unit/evaluator_spec.js index bc4ba12ae..412a835dd 100644 --- a/test/unit/evaluator_spec.js +++ b/test/unit/evaluator_spec.js @@ -227,5 +227,16 @@ describe('evaluator', function() { expect(result.fnArray[3]).toEqual(OPS.restore); }); }); + it('should skip paint form XObject if name is missing', function() { + var evaluator = new PartialEvaluator(new PdfManagerMock(), + new XrefMock(), new HandlerMock(), + 'prefix'); + var stream = new StringStream('/ Do'); + runOperatorListCheck(evaluator, stream, new ResourcesMock(), + function (result) { + expect(result.argsArray).toEqual([]); + expect(result.fnArray).toEqual([]); + }); + }); }); });