diff --git a/c/qrcodegen-worker.c b/c/qrcodegen-worker.c index b41a037..51678bb 100644 --- a/c/qrcodegen-worker.c +++ b/c/qrcodegen-worker.c @@ -39,20 +39,24 @@ int main(void) { while (true) { // Read data length or exit - int length; - if (scanf("%d", &length) != 1) - return EXIT_FAILURE; - if (length == -1) - break; + size_t length; + { + int temp; + if (scanf("%d", &temp) != 1) + return EXIT_FAILURE; + if (temp == -1) + break; + length = (size_t)temp; + } // Read data bytes bool isAscii = true; - uint8_t *data = malloc((size_t)length * sizeof(uint8_t)); + uint8_t *data = malloc(length * sizeof(uint8_t)); if (data == NULL) { perror("malloc"); return EXIT_FAILURE; } - for (int i = 0; i < length; i++) { + for (size_t i = 0; i < length; i++) { int b; if (scanf("%d", &b) != 1) return EXIT_FAILURE; @@ -66,9 +70,9 @@ int main(void) { return EXIT_FAILURE; // Allocate memory for QR Code - int bufferLen = qrcodegen_BUFFER_LEN_FOR_VERSION(maxVersion); - uint8_t *qrcode = malloc((size_t)bufferLen * sizeof(uint8_t)); - uint8_t *tempBuffer = malloc((size_t)bufferLen * sizeof(uint8_t)); + size_t bufferLen = (size_t)qrcodegen_BUFFER_LEN_FOR_VERSION(maxVersion); + uint8_t *qrcode = malloc(bufferLen * sizeof(uint8_t)); + uint8_t *tempBuffer = malloc(bufferLen * sizeof(uint8_t)); if (qrcode == NULL || tempBuffer == NULL) { perror("malloc"); return EXIT_FAILURE; @@ -77,20 +81,20 @@ int main(void) { // Try to make QR Code symbol bool ok; if (isAscii) { - char *text = malloc((size_t)(length + 1) * sizeof(char)); + char *text = malloc((length + 1) * sizeof(char)); if (text == NULL) { perror("malloc"); return EXIT_FAILURE; } - for (int i = 0; i < length; i++) + for (size_t i = 0; i < length; i++) text[i] = (char)data[i]; text[length] = '\0'; ok = qrcodegen_encodeText(text, tempBuffer, qrcode, (enum qrcodegen_Ecc)errCorLvl, minVersion, maxVersion, (enum qrcodegen_Mask)mask, boostEcl == 1); free(text); } else if (length <= bufferLen) { - memcpy(tempBuffer, data, (size_t)length * sizeof(data[0])); - ok = qrcodegen_encodeBinary(tempBuffer, (size_t)length, qrcode, (enum qrcodegen_Ecc)errCorLvl, + memcpy(tempBuffer, data, length * sizeof(data[0])); + ok = qrcodegen_encodeBinary(tempBuffer, length, qrcode, (enum qrcodegen_Ecc)errCorLvl, minVersion, maxVersion, (enum qrcodegen_Mask)mask, boostEcl == 1); } else ok = false;