summaryrefslogtreecommitdiff
path: root/core/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/com')
-rw-r--r--core/src/main/java/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java15
1 files changed, 7 insertions, 8 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 61cab98c0..b73f2ac58 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
@@ -222,25 +222,24 @@ public final class RSSExpandedReader extends AbstractRSSReader {
private List<ExpandedPair> checkRows(List<ExpandedRow> collectedRows, int currentRow) throws NotFoundException {
for (int i = currentRow; i < rows.size(); i++) {
ExpandedRow row = rows.get(i);
- this.pairs.clear();
- for (ExpandedRow collectedRow : collectedRows) {
- this.pairs.addAll(collectedRow.getPairs());
- }
this.pairs.addAll(row.getPairs());
+ int addSize = row.getPairs().size();
if (isValidSequence(this.pairs, false)) {
if (checkChecksum()) {
return this.pairs;
}
-
- List<ExpandedRow> rs = new ArrayList<>(collectedRows);
- rs.add(row);
+ collectedRows.add(row);
try {
// Recursion: try to add more rows
- return checkRows(rs, i + 1);
+ return checkRows(collectedRows, i + 1);
} catch (NotFoundException e) {
// We failed, try the next candidate
+ collectedRows.remove(collectedRows.size() - 1);
+ this.pairs.subList(this.pairs.size() - addSize, this.pairs.size()).clear();
}
+ } else {
+ this.pairs.subList(this.pairs.size() - addSize, this.pairs.size()).clear();
}
}