mirror of
https://github.com/zint/zint
synced 2024-11-16 20:57:25 +13:00
Avoid trying to encode non-EDIFACT characters in EDIFACT mode
Bug report by brunt, revokes commit [dc3626], tickets #44 and #50
This commit is contained in:
parent
0dc3b60c2b
commit
6115a3f8b6
@ -432,13 +432,13 @@ static int look_ahead_test(const unsigned char inputData[], const int sourcelen,
|
|||||||
edf_count += (3.0F / 4.0F); // (p)(1)
|
edf_count += (3.0F / 4.0F); // (p)(1)
|
||||||
} else {
|
} else {
|
||||||
if (inputData[sp] > 127) {
|
if (inputData[sp] > 127) {
|
||||||
edf_count += (17.0F / 4.0F); // (p)(2)
|
edf_count += 17.0F; // (p)(2) > Value changed from ISO
|
||||||
} else {
|
} else {
|
||||||
edf_count += (13.0F / 4.0F); // (p)(3)
|
edf_count += 13.0F; // (p)(3) > Value changed from ISO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((gs1 == 1) && (inputData[sp] == '[')) {
|
if ((gs1 == 1) && (inputData[sp] == '[')) {
|
||||||
edf_count += 6.0F;
|
edf_count += 13.0F; // > Value changed from ISO
|
||||||
}
|
}
|
||||||
|
|
||||||
/* base 256 ... step (q) */
|
/* base 256 ... step (q) */
|
||||||
@ -520,6 +520,9 @@ static int look_ahead_test(const unsigned char inputData[], const int sourcelen,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//printf("Char %d[%c]: ASC:%.2f C40:%.2f X12:%.2f TXT:%.2f EDI:%.2f BIN:%.2f\n", sp,
|
||||||
|
// inputData[sp], ascii_count, c40_count, x12_count, text_count, edf_count, b256_count);
|
||||||
|
|
||||||
sp++;
|
sp++;
|
||||||
} while (best_scheme == DM_NULL); // step (s)
|
} while (best_scheme == DM_NULL); // step (s)
|
||||||
|
|
||||||
@ -869,7 +872,7 @@ static int dm200encode(struct zint_symbol *symbol, const unsigned char source[],
|
|||||||
|
|
||||||
/* step (f) EDIFACT encodation */
|
/* step (f) EDIFACT encodation */
|
||||||
if (current_mode == DM_EDIFACT) {
|
if (current_mode == DM_EDIFACT) {
|
||||||
int value = -1;
|
int value = 0;
|
||||||
|
|
||||||
next_mode = DM_EDIFACT;
|
next_mode = DM_EDIFACT;
|
||||||
if (*process_p == 3) {
|
if (*process_p == 3) {
|
||||||
@ -881,27 +884,15 @@ static int dm200encode(struct zint_symbol *symbol, const unsigned char source[],
|
|||||||
(*process_p)++;
|
(*process_p)++;
|
||||||
next_mode = DM_ASCII;
|
next_mode = DM_ASCII;
|
||||||
} else {
|
} else {
|
||||||
if ((source[sp] >= '@') && (source[sp] <= '^')) {
|
|
||||||
value = source[sp] - '@';
|
|
||||||
}
|
|
||||||
if ((source[sp] >= ' ') && (source[sp] <= '?')) {
|
|
||||||
value = source[sp];
|
value = source[sp];
|
||||||
|
|
||||||
|
if (source[sp] >= 64) { // '@'
|
||||||
|
value -= 64;
|
||||||
}
|
}
|
||||||
if (value != -1) {
|
|
||||||
process_buffer[*process_p] = value;
|
process_buffer[*process_p] = value;
|
||||||
(*process_p)++;
|
(*process_p)++;
|
||||||
sp++;
|
sp++;
|
||||||
} else {
|
|
||||||
// Invalid character, latch to ASCII
|
|
||||||
process_buffer[*process_p] = 31;
|
|
||||||
(*process_p)++;
|
|
||||||
|
|
||||||
while (*process_p < 4) {
|
|
||||||
process_buffer[*process_p] = 0;
|
|
||||||
(*process_p)++;
|
|
||||||
}
|
|
||||||
next_mode = DM_ASCII;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*process_p >= 4) {
|
if (*process_p >= 4) {
|
||||||
|
Loading…
Reference in New Issue
Block a user