X-Git-Url: http://git.rot13.org/?p=zxing.git;a=blobdiff_plain;f=cpp%2Fcore%2Fsrc%2Fzxing%2Foned%2FEAN8Reader.cpp;h=fb94f150054ac5a6a9dab32a5b9db1f0cea92188;hp=75bc4ad24dcc63c15802bc91a842031d30fe886d;hb=45e643cea495289f6e95112482a3fd3086ef4431;hpb=5cc5a1cd29b034939d7545140454c869844ddfea diff --git a/cpp/core/src/zxing/oned/EAN8Reader.cpp b/cpp/core/src/zxing/oned/EAN8Reader.cpp index 75bc4ad2..fb94f150 100644 --- a/cpp/core/src/zxing/oned/EAN8Reader.cpp +++ b/cpp/core/src/zxing/oned/EAN8Reader.cpp @@ -36,21 +36,26 @@ namespace zxing { for (int x = 0; x < 4 && rowOffset < end; x++) { int bestMatch = decodeDigit(row, counters, countersLen, rowOffset, UPC_EAN_PATTERNS_L_PATTERNS); + if (bestMatch < 0) { + return -1; + } resultString.append(1, (char) ('0' + bestMatch)); for (int i = 0; i < countersLen; i++) { rowOffset += counters[i]; } } - int* middleRange = 0; - try { - middleRange = findGuardPattern(row, rowOffset, true, (int*)getMIDDLE_PATTERN(), + int* middleRange = findGuardPattern(row, rowOffset, true, (int*)getMIDDLE_PATTERN(), getMIDDLE_PATTERN_LEN()); + if (middleRange != NULL) { rowOffset = middleRange[1]; - for (int x = 0; x < 4 && rowOffset < end; x++) { int bestMatch = decodeDigit(row, counters, countersLen, rowOffset, UPC_EAN_PATTERNS_L_PATTERNS); + if (bestMatch < 0) { + delete [] middleRange; + return -1; + } resultString.append(1, (char) ('0' + bestMatch)); for (int i = 0; i < countersLen; i++) { rowOffset += counters[i]; @@ -59,10 +64,8 @@ namespace zxing { delete [] middleRange; return rowOffset; - } catch (ReaderException const& re) { - delete [] middleRange; - throw re; } + return -1; } BarcodeFormat EAN8Reader::getBarcodeFormat(){