mirror of
https://github.com/zint/zint
synced 2024-11-16 20:57:25 +13:00
Correct some memory leaks found by MSVC
This commit is contained in:
parent
6c631bf282
commit
18b986156f
@ -23,7 +23,7 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#ifdef _MSC_VER
|
||||
#include <malloc.h>
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
#include "common.h"
|
||||
#include "aztec.h"
|
||||
@ -55,14 +55,14 @@ int aztec_text_process(unsigned char source[], char binary_string[], int gs1)
|
||||
int i, j, k, bytes;
|
||||
int curtable, newtable, lasttable, chartype, maplength, blocks, debug;
|
||||
#ifndef _MSC_VER
|
||||
int charmap[ustrlen(source)], typemap[ustrlen(source)];
|
||||
int charmap[ustrlen(source) * 2], typemap[ustrlen(source) * 2];
|
||||
int blockmap[2][ustrlen(source)];
|
||||
#else
|
||||
int* charmap = (int*)_alloca(ustrlen(source) * sizeof(int));
|
||||
int* typemap = (int*)_alloca(ustrlen(source) * sizeof(int));
|
||||
int* charmap = (int*)_alloca((ustrlen(source) * 2) * sizeof(int));
|
||||
int* typemap = (int*)_alloca((ustrlen(source) * 2) * sizeof(int));
|
||||
int* blockmap[2];
|
||||
blockmap[0] = (int*)_alloca(ustrlen(source) * sizeof(int));
|
||||
blockmap[1] = (int*)_alloca(ustrlen(source) * sizeof(int));
|
||||
blockmap[0] = (int*)_alloca(ustrlen(source) * sizeof(int));
|
||||
blockmap[1] = (int*)_alloca(ustrlen(source) * sizeof(int));
|
||||
#endif
|
||||
/* Lookup input string in encoding table */
|
||||
maplength = 0;
|
||||
|
@ -241,7 +241,7 @@ static char *hexbit[32] = {"00000", "00001", "00010", "00011", "00100", "00101",
|
||||
"10110", "10111", "11000", "11001", "11010", "11011", "11100", "11101", "11110", "11111"
|
||||
};
|
||||
|
||||
static char *pentbit[32] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001",
|
||||
static char *pentbit[16] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001",
|
||||
"1010", "1011", "1100", "1101", "1110", "1111"
|
||||
};
|
||||
|
||||
|
@ -169,10 +169,12 @@ int c39(struct zint_symbol *symbol, unsigned char source[])
|
||||
char check_digit;
|
||||
int h, error_number;
|
||||
char dest[1000];
|
||||
char localstr[3];
|
||||
|
||||
error_number = 0;
|
||||
counter = 0;
|
||||
strcpy(dest, "");
|
||||
strcpy(localstr, "");
|
||||
|
||||
if((symbol->option_2 < 0) || (symbol->option_2 > 1)) {
|
||||
symbol->option_2 = 0;
|
||||
@ -226,8 +228,8 @@ int c39(struct zint_symbol *symbol, unsigned char source[])
|
||||
}
|
||||
|
||||
h = ustrlen(source);
|
||||
source[h] = check_digit;
|
||||
source[h + 1] = '\0';
|
||||
localstr[0] = check_digit;
|
||||
localstr[1] = '\0';
|
||||
}
|
||||
|
||||
/* Stop character */
|
||||
@ -247,9 +249,11 @@ int c39(struct zint_symbol *symbol, unsigned char source[])
|
||||
if(symbol->symbology == BARCODE_CODE39) {
|
||||
ustrcpy(symbol->text, (unsigned char*)"*");
|
||||
uconcat(symbol->text, source);
|
||||
uconcat(symbol->text, (unsigned char*)localstr);
|
||||
uconcat(symbol->text, (unsigned char*)"*");
|
||||
} else {
|
||||
ustrcpy(symbol->text, source);
|
||||
uconcat(symbol->text, (unsigned char*)localstr);
|
||||
}
|
||||
return error_number;
|
||||
}
|
||||
|
@ -92,7 +92,7 @@ int is_sane(char test_string[], unsigned char source[])
|
||||
{ /* Verifies that a string only uses valid characters */
|
||||
unsigned int i, j, latch;
|
||||
|
||||
for(i = 0; i < ustrlen(source); i++) {
|
||||
for(i = 0; i < ustrlen(source) - 1; i++) {
|
||||
latch = FALSE;
|
||||
for(j = 0; j < strlen(test_string); j++) {
|
||||
if (source[i] == test_string[j]) { latch = TRUE; } }
|
||||
@ -231,6 +231,19 @@ int is_stackable(int symbology) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int is_extendable(int symbology) {
|
||||
/* Indicates which symbols can have addon */
|
||||
if(symbology == BARCODE_EANX) { return 1; }
|
||||
if(symbology == BARCODE_UPCA) { return 1; }
|
||||
if(symbology == BARCODE_UPCE) { return 1; }
|
||||
if(symbology == BARCODE_ISBNX) { return 1; }
|
||||
if(symbology == BARCODE_UPCA_CC) { return 1; }
|
||||
if(symbology == BARCODE_UPCE_CC) { return 1; }
|
||||
if(symbology == BARCODE_EANX_CC) { return 1; }
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int roundup(float input)
|
||||
{
|
||||
float remainder;
|
||||
|
@ -53,6 +53,7 @@ extern void lookup(char set_string[], char *table[], char data, char dest[]);
|
||||
extern int posn(char set_string[], char data);
|
||||
extern void expand(struct zint_symbol *symbol, char data[]);
|
||||
extern int is_stackable(int symbology);
|
||||
extern int is_extendable(int symbology);
|
||||
extern int roundup(float input);
|
||||
extern int module_is_set(struct zint_symbol *symbol, int y_coord, int x_coord);
|
||||
extern void set_module(struct zint_symbol *symbol, int y_coord, int x_coord);
|
||||
|
@ -389,6 +389,7 @@ int ZBarcode_Encode(struct zint_symbol *symbol, unsigned char *source)
|
||||
int input_length;
|
||||
|
||||
input_length = ustrlen(source);
|
||||
|
||||
#ifndef _MSC_VER
|
||||
unsigned char preprocessed[input_length];
|
||||
#else
|
||||
@ -595,7 +596,7 @@ int ZBarcode_Print(struct zint_symbol *symbol)
|
||||
/* int i, j;
|
||||
|
||||
for(i = 0; i < symbol->rows; i++) {
|
||||
for(j = 0; j < symbol->width / 7; j++) {
|
||||
for(j = 0; j <= symbol->width / 7; j++) {
|
||||
printf("%2.2X ", symbol->encoded_data[i][j]);
|
||||
}
|
||||
printf("\n");
|
||||
|
@ -555,13 +555,15 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
latch = 0;
|
||||
r = 0;
|
||||
/* Isolate add-on text */
|
||||
for(i = 0; i < ustrlen(local_text); i++) {
|
||||
if (latch == 1) {
|
||||
addon[r] = local_text[i];
|
||||
r++;
|
||||
}
|
||||
if (symbol->text[i] == '+') {
|
||||
latch = 1;
|
||||
if(is_extendable(symbol->symbology)) {
|
||||
for(i = 0; i < ustrlen(local_text); i++) {
|
||||
if (latch == 1) {
|
||||
addon[r] = local_text[i];
|
||||
r++;
|
||||
}
|
||||
if (symbol->text[i] == '+') {
|
||||
latch = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
addon[r] = '\0';
|
||||
|
16
backend/ps.c
16
backend/ps.c
@ -154,13 +154,15 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
latch = 0;
|
||||
r = 0;
|
||||
/* Isolate add-on text */
|
||||
for(i = 0; i < ustrlen(symbol->text); i++) {
|
||||
if (latch == 1) {
|
||||
addon[r] = symbol->text[i];
|
||||
r++;
|
||||
}
|
||||
if (symbol->text[i] == '+') {
|
||||
latch = 1;
|
||||
if(is_extendable(symbol->symbology)) {
|
||||
for(i = 0; i < ustrlen(symbol->text); i++) {
|
||||
if (latch == 1) {
|
||||
addon[r] = symbol->text[i];
|
||||
r++;
|
||||
}
|
||||
if (symbol->text[i] == '+') {
|
||||
latch = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
addon[r] = '\0';
|
||||
|
@ -150,13 +150,15 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
latch = 0;
|
||||
r = 0;
|
||||
/* Isolate add-on text */
|
||||
for(i = 0; i < ustrlen(symbol->text); i++) {
|
||||
if (latch == 1) {
|
||||
addon[r] = symbol->text[i];
|
||||
r++;
|
||||
}
|
||||
if (symbol->text[i] == '+') {
|
||||
latch = 1;
|
||||
if(is_extendable(symbol->symbology)) {
|
||||
for(i = 0; i < ustrlen(symbol->text); i++) {
|
||||
if (latch == 1) {
|
||||
addon[r] = symbol->text[i];
|
||||
r++;
|
||||
}
|
||||
if (symbol->text[i] == '+') {
|
||||
latch = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
addon[r] = '\0';
|
||||
|
@ -613,11 +613,11 @@ zint -o bar92.eps -b 92 --border=10 -d "Demonstration Aztec Code symbol generate
|
||||
|
||||
zint -o bar92.svg -b 92 --border=10 -d "Demonstration Aztec Code symbol generated by libzint"
|
||||
|
||||
echo zint -o bar92a.png -b 92 --gs1 --border=10 -d "[01]98898765432106[02]13012345678909[10]1234567ABCDEFG[3202]012345[15]991231"
|
||||
zint -o bar92a.png -b 92 --gs1 --border=10 -d "[01]98898765432106[02]13012345678909[10]1234567ABCDEFG[3202]012345[15]991231"
|
||||
|
||||
echo zint -o bar92a.eps -b 92 --gs1 --border=10 -d "[01]98898765432106[02]13012345678909[10]1234567ABCDEFG[3202]012345[15]991231"
|
||||
zint -o bar92a.eps -b 92 --gs1 --border=10 -d "[01]98898765432106[02]13012345678909[10]1234567ABCDEFG[3202]012345[15]991231"
|
||||
|
||||
echo zint -o bar92a.svg -b 92 --gs1 --border=10 -d "[01]98898765432106[02]13012345678909[10]1234567ABCDEFG[3202]012345[15]991231"
|
||||
zint -o bar92a.svg -b 92 --gs1 --border=10 -d "[01]98898765432106[02]13012345678909[10]1234567ABCDEFG[3202]012345[15]991231"
|
||||
|
||||
echo testing DAFT Code
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user