From 5bd95df42761411ba83abe4437e5aa1a4af80f10 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 23 Oct 2015 20:44:18 +0200 Subject: [PATCH] Prevent `TypeError: page is undefined` when the document has been destroyed (PR 6546 follow-up) *Follow-up to PR 6546.* If rendering has already started when the document is destroyed, then `this.pageCache[data.pageIndex]` may already have been cleared when the `StartRenderingPage`/`RenderPageChunk` messages are recieved in `api.js`, which results in `TypeError`s being thrown. --- src/display/api.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/display/api.js b/src/display/api.js index fb47469e0..f097bcad6 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -1233,6 +1233,9 @@ var WorkerTransport = (function WorkerTransportClosure() { }, this); messageHandler.on('StartRenderPage', function transportRender(data) { + if (this.destroyed) { + return; // Ignore any pending requests if the worker was terminated. + } var page = this.pageCache[data.pageIndex]; page.stats.timeEnd('Page Request'); @@ -1240,6 +1243,9 @@ var WorkerTransport = (function WorkerTransportClosure() { }, this); messageHandler.on('RenderPageChunk', function transportRender(data) { + if (this.destroyed) { + return; // Ignore any pending requests if the worker was terminated. + } var page = this.pageCache[data.pageIndex]; page._renderPageChunk(data.operatorList, data.intent);