diff --git a/modules/wechat_qrcode/src/zxing/qrcode/decoder/decoded_bit_stream_parser.cpp b/modules/wechat_qrcode/src/zxing/qrcode/decoder/decoded_bit_stream_parser.cpp index b3a0a69cfd4..f02435d568d 100644 --- a/modules/wechat_qrcode/src/zxing/qrcode/decoder/decoded_bit_stream_parser.cpp +++ b/modules/wechat_qrcode/src/zxing/qrcode/decoder/decoded_bit_stream_parser.cpp @@ -127,7 +127,10 @@ void DecodedBitStreamParser::decodeHanziSegment(Ref bits_, string& re while (count > 0) { // Each 13 bits encodes a 2-byte character int twoBytes = bits.readBits(13, err_handler); - if (err_handler.ErrCode()) return; + if (err_handler.ErrCode()) { + delete[] buffer; + return; + } int assembledTwoBytes = ((twoBytes / 0x060) << 8) | (twoBytes % 0x060); if (assembledTwoBytes < 0x003BF) { // In the 0xA1A1 to 0xAAFE range