From 2dd6cb43dda82757be64edec9dee3f007ff8bbc5 Mon Sep 17 00:00:00 2001 From: Daniel Gredler Date: Sat, 16 Sep 2023 09:15:21 -0400 Subject: Avoid decoding stacked row 1 of N independently (#1693) * Avoid decoding stacked row 1 of N independently * Avoid decoding stacked row 1 of N independently --- .../com/google/zxing/oned/rss/expanded/RSSExpandedReader.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'core/src/main/java') diff --git a/core/src/main/java/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java b/core/src/main/java/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java index 0e06ac3a5..61cab98c0 100644 --- a/core/src/main/java/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java +++ b/core/src/main/java/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java @@ -167,8 +167,7 @@ public final class RSSExpandedReader extends AbstractRSSReader { } } - // TODO: verify sequence of finder patterns as in checkPairSequence() - if (checkChecksum()) { + if (checkChecksum() && isValidSequence(this.pairs, true)) { return this.pairs; } @@ -229,7 +228,7 @@ public final class RSSExpandedReader extends AbstractRSSReader { } this.pairs.addAll(row.getPairs()); - if (isValidSequence(this.pairs)) { + if (isValidSequence(this.pairs, false)) { if (checkChecksum()) { return this.pairs; } @@ -249,10 +248,11 @@ public final class RSSExpandedReader extends AbstractRSSReader { } // Whether the pairs form a valid finder pattern sequence, either complete or a prefix - private static boolean isValidSequence(List pairs) { + private static boolean isValidSequence(List pairs, boolean complete) { for (int[] sequence : FINDER_PATTERN_SEQUENCES) { - if (pairs.size() <= sequence.length) { + boolean sizeOk = (complete ? pairs.size() == sequence.length : pairs.size() <= sequence.length); + if (sizeOk) { boolean stop = true; for (int j = 0; j < pairs.size(); j++) { if (pairs.get(j).getFinderPattern().getValue() != sequence[j]) { -- cgit v1.2.3