mirror of
https://git.code.sf.net/p/zint/code
synced 2025-12-19 02:47:06 +00:00
Ensure ECI encoding doesn't corrupt binary data in Data Matrix
Fixes #105 reported by Daniel Gredler
This commit is contained in:
@@ -581,12 +581,14 @@ static int dm200encode(struct zint_symbol *symbol, const unsigned char source[],
|
|||||||
if (symbol->eci <= 126) {
|
if (symbol->eci <= 126) {
|
||||||
target[tp] = (unsigned char) symbol->eci + 1;
|
target[tp] = (unsigned char) symbol->eci + 1;
|
||||||
tp++;
|
tp++;
|
||||||
|
strcat(binary, " ");
|
||||||
}
|
}
|
||||||
if ((symbol->eci >= 127) && (symbol->eci <= 16382)) {
|
if ((symbol->eci >= 127) && (symbol->eci <= 16382)) {
|
||||||
target[tp] = (unsigned char) ((symbol->eci - 127) / 254) + 128;
|
target[tp] = (unsigned char) ((symbol->eci - 127) / 254) + 128;
|
||||||
tp++;
|
tp++;
|
||||||
target[tp] = (unsigned char) ((symbol->eci - 127) % 254) + 1;
|
target[tp] = (unsigned char) ((symbol->eci - 127) % 254) + 1;
|
||||||
tp++;
|
tp++;
|
||||||
|
strcat(binary, " ");
|
||||||
}
|
}
|
||||||
if (symbol->eci >= 16383) {
|
if (symbol->eci >= 16383) {
|
||||||
target[tp] = (unsigned char) ((symbol->eci - 16383) / 64516) + 192;
|
target[tp] = (unsigned char) ((symbol->eci - 16383) / 64516) + 192;
|
||||||
@@ -595,6 +597,7 @@ static int dm200encode(struct zint_symbol *symbol, const unsigned char source[],
|
|||||||
tp++;
|
tp++;
|
||||||
target[tp] = (unsigned char) ((symbol->eci - 16383) % 254) + 1;
|
target[tp] = (unsigned char) ((symbol->eci - 16383) % 254) + 1;
|
||||||
tp++;
|
tp++;
|
||||||
|
strcat(binary, " ");
|
||||||
}
|
}
|
||||||
if (debug) printf("ECI %d ", symbol->eci + 1);
|
if (debug) printf("ECI %d ", symbol->eci + 1);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user