From 744a2d7b0458de8434d97d77d15c4d99c905f500 Mon Sep 17 00:00:00 2001 From: "Kwabena W. Agyeman" Date: Sat, 3 Jun 2017 15:07:22 -0400 Subject: [PATCH] Upstream Kanji fix. --- src/omv/img/qrcode.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/omv/img/qrcode.c b/src/omv/img/qrcode.c index 02b2d86a2..88559777c 100644 --- a/src/omv/img/qrcode.c +++ b/src/omv/img/qrcode.c @@ -2694,12 +2694,18 @@ static quirc_decode_error_t decode_kanji(struct quirc_data *data, for (i = 0; i < count; i++) { int d = take_bits(ds, 13); + int msB = d / 0xc0; + int lsB = d % 0xc0; + int intermediate = (msB << 8) | lsB; uint16_t sjw; - if (d + 0x8140 >= 0x9ffc) - sjw = d + 0x8140; - else - sjw = d + 0xc140; + if (intermediate + 0x8140 <= 0x9ffc) { + /* bytes are in the range 0x8140 to 0x9FFC */ + sjw = intermediate + 0x8140; + } else { + /* bytes are in the range 0xE040 to 0xEBBF */ + sjw = intermediate + 0xc140; + } data->payload[data->payload_len++] = sjw >> 8; data->payload[data->payload_len++] = sjw & 0xff;