From ef48a9a7134352afb52be23c42961765a966ba32 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 10 Jul 2019 13:41:16 +0200 Subject: [PATCH] Update the `PageError` handler, in the API, to always mark the `operatorList` as done and finalize any pending renderTasks Note that, in the old code, there was a code-path which could prevent this from happening thus affecting future cleanup. Furthermore, ensure that we'll always attempt to cleanup when handling the 'PageError' message, similar to the code in e.g. the `PDFPageProxy._renderPageChunk` method. --- src/display/api.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 40efb5db0..97c97f95f 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -2089,19 +2089,21 @@ class WorkerTransport { const page = this.pageCache[data.pageIndex]; const intentState = page.intentStates[data.intent]; + if (intentState.operatorList) { + // Mark operator list as complete. + intentState.operatorList.lastChunk = true; + + for (let i = 0; i < intentState.renderTasks.length; i++) { + intentState.renderTasks[i].operatorListChanged(); + } + page._tryCleanup(); + } + if (intentState.displayReadyCapability) { intentState.displayReadyCapability.reject(new Error(data.error)); } else { throw new Error(data.error); } - - if (intentState.operatorList) { - // Mark operator list as complete. - intentState.operatorList.lastChunk = true; - for (let i = 0; i < intentState.renderTasks.length; i++) { - intentState.renderTasks[i].operatorListChanged(); - } - } }, this); messageHandler.on('UnsupportedFeature', this._onUnsupportedFeature, this);