mirror of
https://github.com/zint/zint
synced 2024-11-16 20:57:25 +13:00
Bugfix: Insertion of unlatch character in EDIFACT mode will unlatch immediately, not at the end of the 24-bit block
Fixes #60, Ref: ISO para 5.2.8.2. Bug report thanks to ice4x800@sf
This commit is contained in:
parent
4c8de6399f
commit
a1327cbd0d
@ -1041,7 +1041,7 @@ static int dm200encode_remainder(unsigned char target[], int target_length, cons
|
||||
}
|
||||
break;
|
||||
|
||||
case DM_EDIFACT:
|
||||
case DM_EDIFACT:
|
||||
if (symbols_left <= 2) // Unlatch not required!
|
||||
{
|
||||
if (process_p == 1) {
|
||||
@ -1056,15 +1056,10 @@ static int dm200encode_remainder(unsigned char target[], int target_length, cons
|
||||
target_length++;
|
||||
}
|
||||
} else {
|
||||
// Append edifact unlatch value (31) and encode as triple
|
||||
|
||||
// Append edifact unlatch value (31) and empty buffer
|
||||
if (process_p == 0) {
|
||||
target[target_length] = (unsigned char) (31 << 2);
|
||||
target_length++;
|
||||
target[target_length] = 0;
|
||||
target_length++;
|
||||
target[target_length] = 0;
|
||||
target_length++;
|
||||
}
|
||||
|
||||
if (process_p == 1) {
|
||||
@ -1072,8 +1067,6 @@ static int dm200encode_remainder(unsigned char target[], int target_length, cons
|
||||
target_length++;
|
||||
target[target_length] = (unsigned char) ((31 & 0x0f) << 4);
|
||||
target_length++;
|
||||
target[target_length] = (unsigned char) 0;
|
||||
target_length++;
|
||||
}
|
||||
|
||||
if (process_p == 2) {
|
||||
@ -1093,7 +1086,6 @@ static int dm200encode_remainder(unsigned char target[], int target_length, cons
|
||||
target[target_length] = (unsigned char) (((process_buffer[2] & 0x03) << 6) + 31);
|
||||
target_length++;
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1219,7 +1211,7 @@ int data_matrix_200(struct zint_symbol *symbol, const unsigned char source[], co
|
||||
// Print Codewords
|
||||
#ifdef DEBUG
|
||||
{
|
||||
int CWCount;
|
||||
int CWCount;
|
||||
int posCur;
|
||||
if (skew)
|
||||
CWCount = 1558 + 620;
|
||||
@ -1254,7 +1246,7 @@ int data_matrix_200(struct zint_symbol *symbol, const unsigned char source[], co
|
||||
#ifdef DEBUG
|
||||
// Print position matrix as in standard
|
||||
for (y = NR - 1; y >= 0; y--) {
|
||||
for (x = 0; x < NC; x++) {
|
||||
for (x = 0; x < NC; x++) {
|
||||
int v;
|
||||
if (x != 0)
|
||||
fprintf(stderr, "|");
|
||||
|
Loading…
Reference in New Issue
Block a user