summaryrefslogtreecommitdiff
path: root/core/src/main/java/com
diff options
context:
space:
mode:
authorDaniel Gredler <daniel.gredler@gmail.com>2023-09-16 16:15:21 +0300
committerGitHub <noreply@github.com>2023-09-16 16:15:21 +0300
commit2dd6cb43dda82757be64edec9dee3f007ff8bbc5 (patch)
treed8e0209752a1affd63a3c05380f4ac64e6d4e34f /core/src/main/java/com
parent465753afe637ee3ad3bd0710005934236e86143b (diff)
downloadzxing-2dd6cb43dda82757be64edec9dee3f007ff8bbc5.tar.xz
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
Diffstat (limited to 'core/src/main/java/com')
-rw-r--r--core/src/main/java/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java10
1 files changed, 5 insertions, 5 deletions
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<ExpandedPair> pairs) {
+ private static boolean isValidSequence(List<ExpandedPair> 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]) {