diff --git a/src/common/bit_matrix.rs b/src/common/bit_matrix.rs index b9956f2..91b9879 100644 --- a/src/common/bit_matrix.rs +++ b/src/common/bit_matrix.rs @@ -203,6 +203,12 @@ impl BitMatrix { return ((self.bits[offset] >> (x & 0x1f)) & 1) != 0; } + pub fn try_get(&self, x: u32, y: u32) -> Result { + let offset = y as usize * self.row_size + (x as usize / 32); + if offset > self.bits.len() { return Err(Exceptions::IndexOutOfBoundsException("".to_owned()))} + return Ok(((self.bits[offset] >> (x & 0x1f)) & 1) != 0); + } + /** *

Sets the given bit to true.

* diff --git a/src/pdf417/decoder/pdf_417_scanning_decoder.rs b/src/pdf417/decoder/pdf_417_scanning_decoder.rs index 6103ef7..2974430 100644 --- a/src/pdf417/decoder/pdf_417_scanning_decoder.rs +++ b/src/pdf417/decoder/pdf_417_scanning_decoder.rs @@ -817,6 +817,7 @@ fn adjustCodewordStartColumn( return codewordStartColumn; } correctedStartColumn = (correctedStartColumn as i32 + increment) as u32; + if let Err(_) = image.try_get(correctedStartColumn, imageRow){return 0} } increment = -increment; leftToRight = !leftToRight; diff --git a/tests/qr_code_blackbox_tests.rs b/tests/qr_code_blackbox_tests.rs index 5292857..8f97558 100644 --- a/tests/qr_code_blackbox_tests.rs +++ b/tests/qr_code_blackbox_tests.rs @@ -88,6 +88,7 @@ fn qrcode_black_box4_test_case() { let mut tester = common::AbstractBlackBoxTestCase::new( "test_resources/blackbox/qrcode-4", MultiFormatReader::default(), + // QRCodeReader::new(), BarcodeFormat::QR_CODE, ); tester.add_test(36, 36, 0.0);