diff options
| author | cinsttool <165570940+cinsttool@users.noreply.github.com> | 2024-04-02 15:14:21 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-02 15:14:21 +0300 |
| commit | accc4d5eadf9955bb427ba4ce8471fedde18088f (patch) | |
| tree | 6dd4610d8442229bbccfd53f66bf69f8f19bbe3a /core/src/main/java | |
| parent | c77778ee03fd9f63a8b4a17304d3cdbb1f8d32de (diff) | |
| download | zxing-accc4d5eadf9955bb427ba4ce8471fedde18088f.tar.xz | |
fix container inefficiency in RSSExpandedReader.java (#1782)
Diffstat (limited to 'core/src/main/java')
| -rw-r--r-- | core/src/main/java/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java | 15 |
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(); } } |
