Updated QrCode constructor argument checks in most languages to synchronize logic.

pull/39/merge
Project Nayuki 7 years ago
parent 06d80aade3
commit b6bbaddf4f

@ -120,8 +120,10 @@ QrCode::QrCode(int ver, Ecc ecl, const vector<uint8_t> &dataCodewords, int mask)
errorCorrectionLevel(ecl),
modules (size, vector<bool>(size)), // Initially all white
isFunction(size, vector<bool>(size)) {
if (ver < MIN_VERSION || ver > MAX_VERSION || mask < -1 || mask > 7)
throw std::domain_error("Value out of range");
if (ver < MIN_VERSION || ver > MAX_VERSION)
throw std::domain_error("Version value out of range");
if (mask < -1 || mask > 7)
throw std::domain_error("Mask value out of range");
size = ver * 4 + 17;
// Compute ECC, draw modules, do masking

@ -214,8 +214,10 @@ public final class QrCode {
*/
public QrCode(int ver, Ecc ecl, byte[] dataCodewords, int mask) {
// Check arguments and initialize fields
if (ver < MIN_VERSION || ver > MAX_VERSION || mask < -1 || mask > 7)
throw new IllegalArgumentException("Value out of range");
if (ver < MIN_VERSION || ver > MAX_VERSION)
throw new IllegalArgumentException("Version value out of range");
if (mask < -1 || mask > 7)
throw new IllegalArgumentException("Mask value out of range");
version = ver;
size = ver * 4 + 17;
errorCorrectionLevel = Objects.requireNonNull(ecl);

@ -77,6 +77,8 @@ var qrcodegen = new function() {
throw "Version value out of range";
if (mask < -1 || mask > 7)
throw "Mask value out of range";
if (!(errCorLvl instanceof Ecc))
throw "QrCode.Ecc expected";
var size = version * 4 + 17;
// Initialize both grids to be size*size arrays of Boolean false

@ -162,9 +162,6 @@ class QrCode(object):
self._size = version * 4 + 17
self._errcorlvl = errcorlvl
if len(datacodewords) != QrCode._get_num_data_codewords(version, errcorlvl):
raise ValueError("Invalid array length")
# Initialize both grids to be size*size arrays of Boolean false
# The modules of this QR Code symbol (False = white, True = black). Immutable after constructor finishes
self._modules = [[False] * self._size for _ in range(self._size)] # Initially all white

Loading…
Cancel
Save