From 16b59e207dc5ebde360d751986fb5b1c15607436 Mon Sep 17 00:00:00 2001 From: Project Nayuki Date: Tue, 28 Aug 2018 19:45:09 +0000 Subject: [PATCH] Deleted unnecessary version range check in two private functions, in all language versions except Rust. --- c/qrcodegen.c | 4 +--- cpp/QrCode.cpp | 2 -- cpp/QrSegment.cpp | 2 -- java/io/nayuki/qrcodegen/QrCode.java | 2 -- java/io/nayuki/qrcodegen/QrSegment.java | 3 --- javascript/qrcodegen.js | 4 ---- python/qrcodegen.py | 4 ---- typescript/qrcodegen.ts | 4 ---- 8 files changed, 1 insertion(+), 24 deletions(-) diff --git a/c/qrcodegen.c b/c/qrcodegen.c index 03cb677..6a93925 100644 --- a/c/qrcodegen.c +++ b/c/qrcodegen.c @@ -231,8 +231,7 @@ testable void addEccAndInterleave(uint8_t data[], int version, enum qrcodegen_Ec // for the given version number and error correction level. The result is in the range [9, 2956]. testable int getNumDataCodewords(int version, enum qrcodegen_Ecc ecl) { int v = version, e = (int)ecl; - assert(qrcodegen_VERSION_MIN <= v && v <= qrcodegen_VERSION_MAX - && 0 <= e && e < 4); + assert(0 <= e && e < 4); return getNumRawDataModules(v) / 8 - ECC_CODEWORDS_PER_BLOCK[e][v] * NUM_ERROR_CORRECTION_BLOCKS[e][v]; @@ -977,7 +976,6 @@ bool qrcodegen_encodeSegmentsAdvanced(const struct qrcodegen_Segment segs[], siz // many characters to fit its length field, or the total bits exceeds INT16_MAX. testable int getTotalBits(const struct qrcodegen_Segment segs[], size_t len, int version) { assert(segs != NULL || len == 0); - assert(qrcodegen_VERSION_MIN <= version && version <= qrcodegen_VERSION_MAX); long result = 0; for (size_t i = 0; i < len; i++) { int numChars = segs[i].numChars; diff --git a/cpp/QrCode.cpp b/cpp/QrCode.cpp index 86b78f9..2e0bedd 100644 --- a/cpp/QrCode.cpp +++ b/cpp/QrCode.cpp @@ -526,8 +526,6 @@ int QrCode::getNumRawDataModules(int ver) { int QrCode::getNumDataCodewords(int ver, Ecc ecl) { - if (ver < MIN_VERSION || ver > MAX_VERSION) - throw std::domain_error("Version number out of range"); return getNumRawDataModules(ver) / 8 - ECC_CODEWORDS_PER_BLOCK[static_cast(ecl)][ver] * NUM_ERROR_CORRECTION_BLOCKS[static_cast(ecl)][ver]; diff --git a/cpp/QrSegment.cpp b/cpp/QrSegment.cpp index 70c0445..1b674ef 100644 --- a/cpp/QrSegment.cpp +++ b/cpp/QrSegment.cpp @@ -171,8 +171,6 @@ QrSegment::QrSegment(Mode md, int numCh, std::vector &&dt) : int QrSegment::getTotalBits(const vector &segs, int version) { - if (version < 1 || version > 40) - throw std::domain_error("Version number out of range"); int result = 0; for (const QrSegment &seg : segs) { int ccbits = seg.mode.numCharCountBits(version); diff --git a/java/io/nayuki/qrcodegen/QrCode.java b/java/io/nayuki/qrcodegen/QrCode.java index acd7832..2dbe091 100644 --- a/java/io/nayuki/qrcodegen/QrCode.java +++ b/java/io/nayuki/qrcodegen/QrCode.java @@ -692,8 +692,6 @@ public final class QrCode { // QR Code of the given version number and error correction level, with remainder bits discarded. // This stateless pure function could be implemented as a (40*4)-cell lookup table. static int getNumDataCodewords(int ver, Ecc ecl) { - if (ver < MIN_VERSION || ver > MAX_VERSION) - throw new IllegalArgumentException("Version number out of range"); return getNumRawDataModules(ver) / 8 - ECC_CODEWORDS_PER_BLOCK[ecl.ordinal()][ver] * NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal()][ver]; diff --git a/java/io/nayuki/qrcodegen/QrSegment.java b/java/io/nayuki/qrcodegen/QrSegment.java index 281e63a..81e754c 100644 --- a/java/io/nayuki/qrcodegen/QrSegment.java +++ b/java/io/nayuki/qrcodegen/QrSegment.java @@ -202,9 +202,6 @@ public final class QrSegment { // many characters to fit its length field, or the total bits exceeds Integer.MAX_VALUE. static int getTotalBits(List segs, int version) { Objects.requireNonNull(segs); - if (version < 1 || version > 40) - throw new IllegalArgumentException("Version number out of range"); - long result = 0; for (QrSegment seg : segs) { Objects.requireNonNull(seg); diff --git a/javascript/qrcodegen.js b/javascript/qrcodegen.js index 14505be..331536f 100644 --- a/javascript/qrcodegen.js +++ b/javascript/qrcodegen.js @@ -636,8 +636,6 @@ var qrcodegen = new function() { // QR Code of the given version number and error correction level, with remainder bits discarded. // This stateless pure function could be implemented as a (40*4)-cell lookup table. QrCode.getNumDataCodewords = function(ver, ecl) { - if (ver < MIN_VERSION || ver > MAX_VERSION) - throw "Version number out of range"; return Math.floor(QrCode.getNumRawDataModules(ver) / 8) - QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver] * QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver]; @@ -816,8 +814,6 @@ var qrcodegen = new function() { // (Package-private) Calculates and returns the number of bits needed to encode the given segments at the // given version. The result is infinity if a segment has too many characters to fit its length field. this.QrSegment.getTotalBits = function(segs, version) { - if (version < MIN_VERSION || version > MAX_VERSION) - throw "Version number out of range"; var result = 0; for (var i = 0; i < segs.length; i++) { var seg = segs[i]; diff --git a/python/qrcodegen.py b/python/qrcodegen.py index 58a6f6e..d37ce14 100644 --- a/python/qrcodegen.py +++ b/python/qrcodegen.py @@ -522,8 +522,6 @@ class QrCode(object): """Returns the number of 8-bit data (i.e. not error correction) codewords contained in any QR Code of the given version number and error correction level, with remainder bits discarded. This stateless pure function could be implemented as a (40*4)-cell lookup table.""" - if not (QrCode.MIN_VERSION <= ver <= QrCode.MAX_VERSION): - raise ValueError("Version number out of range") return QrCode._get_num_raw_data_modules(ver) // 8 \ - QrCode._ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver] \ * QrCode._NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver] @@ -703,8 +701,6 @@ class QrSegment(object): """Calculates the number of bits needed to encode the given segments at the given version. Returns a non-negative number if successful. Otherwise returns None if a segment has too many characters to fit its length field.""" - if not (QrCode.MIN_VERSION <= version <= QrCode.MAX_VERSION): - raise ValueError("Version number out of range") result = 0 for seg in segs: ccbits = seg.get_mode().num_char_count_bits(version) diff --git a/typescript/qrcodegen.ts b/typescript/qrcodegen.ts index 54c3a2c..f9d44a0 100644 --- a/typescript/qrcodegen.ts +++ b/typescript/qrcodegen.ts @@ -599,8 +599,6 @@ namespace qrcodegen { // QR Code of the given version number and error correction level, with remainder bits discarded. // This stateless pure function could be implemented as a (40*4)-cell lookup table. private static getNumDataCodewords(ver: int, ecl: QrCode.Ecc): int { - if (ver < QrCode.MIN_VERSION || ver > QrCode.MAX_VERSION) - throw "Version number out of range"; return Math.floor(QrCode.getNumRawDataModules(ver) / 8) - QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver] * QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver]; @@ -772,8 +770,6 @@ namespace qrcodegen { // (Package-private) Calculates and returns the number of bits needed to encode the given segments at // the given version. The result is infinity if a segment has too many characters to fit its length field. public static getTotalBits(segs: Array, version: int): number { - if (version < QrCode.MIN_VERSION || version > QrCode.MAX_VERSION) - throw "Version number out of range"; let result: number = 0; for (let i = 0; i < segs.length; i++) { let seg: QrSegment = segs[i];