From be9eadefcfaca08651ca13cca970e09fd8c4066f Mon Sep 17 00:00:00 2001 From: selsta Date: Tue, 26 May 2026 13:20:32 +0200 Subject: QR: skip QImage padding when filling quirc buffer also update quirc submodule --- external/quirc | 2 +- src/QR-Code-scanner/Decoder.cpp | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/external/quirc b/external/quirc index 7e7ab596..927d6809 160000 --- a/external/quirc +++ b/external/quirc @@ -1 +1 @@ -Subproject commit 7e7ab596e4d0988faf1c12ae89c354b114181c40 +Subproject commit 927d680904dc95fdff4cd9d022eb374b438ff8f2 diff --git a/src/QR-Code-scanner/Decoder.cpp b/src/QR-Code-scanner/Decoder.cpp index 25ef0f04..57100006 100644 --- a/src/QR-Code-scanner/Decoder.cpp +++ b/src/QR-Code-scanner/Decoder.cpp @@ -28,6 +28,7 @@ #include "Decoder.h" +#include #include #include "quirc.h" @@ -67,11 +68,14 @@ std::vector QrDecoder::decodeGrayscale8(const QImage &image) { throw std::runtime_error("QUIRC: failed to get image buffer"); } -#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) - std::copy(image.constBits(), image.constBits() + image.sizeInBytes(), rawImage); -#else - std::copy(image.constBits(), image.constBits() + image.byteCount(), rawImage); -#endif + + const int width = image.width(); + const int height = image.height(); + for (int y = 0; y < height; ++y) + { + std::memcpy(rawImage + y * width, image.constScanLine(y), width); + } + quirc_end(m_qr); const int count = quirc_count(m_qr); -- cgit v1.2.3