From 9590cd46a57072924c7cd16591dab3da7fbe6d2c Mon Sep 17 00:00:00 2001 From: opl <4833621+opl@users.noreply.github.com> Date: Sat, 23 Nov 2024 11:28:47 +0100 Subject: [PATCH] Fix readers not reset by Browser*Readers, causing invalid results --- src/browser/BrowserCodeReader.ts | 7 ++++++- src/browser/BrowserMultiFormatReader.ts | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/browser/BrowserCodeReader.ts b/src/browser/BrowserCodeReader.ts index b96c7469..02225796 100644 --- a/src/browser/BrowserCodeReader.ts +++ b/src/browser/BrowserCodeReader.ts @@ -1046,7 +1046,12 @@ export class BrowserCodeReader { * Call the encapsulated readers decode */ public decodeBitmap(binaryBitmap: BinaryBitmap): Result { - return this.reader.decode(binaryBitmap, this._hints); + try { + return this.reader.decode(binaryBitmap, this._hints); + } finally { + // Readers need to be reset before being reused on another bitmap. + this.reader.reset(); + } } /** diff --git a/src/browser/BrowserMultiFormatReader.ts b/src/browser/BrowserMultiFormatReader.ts index a983f14d..b8ab51c7 100644 --- a/src/browser/BrowserMultiFormatReader.ts +++ b/src/browser/BrowserMultiFormatReader.ts @@ -22,6 +22,11 @@ export class BrowserMultiFormatReader extends BrowserCodeReader { * attention to the hints set in the constructor function */ public decodeBitmap(binaryBitmap: BinaryBitmap): Result { - return this.reader.decodeWithState(binaryBitmap); + try { + return this.reader.decodeWithState(binaryBitmap); + } finally { + // Readers need to be reset before being reused on another bitmap. + this.reader.reset(); + } } }