mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-09-09 09:51:34 -07:00
Update lzcomp
This commit is contained in:
parent
73d20afd15
commit
267352c4d8
@ -101,7 +101,7 @@ struct command pick_copy_for_pass (const unsigned char * data, const unsigned ch
|
|||||||
current = buffer + refpos - (length - 3);
|
current = buffer + refpos - (length - 3);
|
||||||
else
|
else
|
||||||
current = reference + refpos;
|
current = reference + refpos;
|
||||||
if (memcmp(data + position, current, 4)) continue;
|
if (memcmp(data + position, current, ((position + 4) > length) ? length - position : 4)) continue;
|
||||||
for (count = 4; (count < (length - position)) && (count < (length - refpos)); count ++) if (data[position + count] != current[count]) break;
|
for (count = 4; (count < (length - position)) && (count < (length - refpos)); count ++) if (data[position + count] != current[count]) break;
|
||||||
if (count > (length - refpos)) count = length - refpos;
|
if (count > (length - refpos)) count = length - refpos;
|
||||||
if (count > (length - position)) count = length - position;
|
if (count > (length - position)) count = length - position;
|
||||||
|
@ -28,8 +28,16 @@ void write_commands_and_padding_to_textfile (const char * file, const struct com
|
|||||||
if (fputs("\tlzend\n", fp) < 0) error_exit(1, "could not write terminator to compressed output");
|
if (fputs("\tlzend\n", fp) < 0) error_exit(1, "could not write terminator to compressed output");
|
||||||
if (padding_size) {
|
if (padding_size) {
|
||||||
input_stream += padding_offset;
|
input_stream += padding_offset;
|
||||||
int rv = fprintf(fp, "\tdb $%02hhx", *(input_stream ++));
|
int rv = 0;
|
||||||
while ((rv >= 0) && (-- padding_size)) rv = fprintf(fp, ", $%02hhx", *(input_stream ++));
|
unsigned pos;
|
||||||
|
const char * prefix = "\tdb";
|
||||||
|
for (pos = 0; (rv >= 0) && (pos < padding_size); pos ++) {
|
||||||
|
if (input_stream[pos])
|
||||||
|
rv = fprintf(fp, "%s $%02hhx", prefix, input_stream[pos]);
|
||||||
|
else
|
||||||
|
rv = fprintf(fp, "%s 0", prefix);
|
||||||
|
prefix = ",";
|
||||||
|
}
|
||||||
if (rv >= 0) rv = -(putc('\n', fp) == EOF);
|
if (rv >= 0) rv = -(putc('\n', fp) == EOF);
|
||||||
if (rv < 0) error_exit(1, "could not write padding to compressed output");
|
if (rv < 0) error_exit(1, "could not write padding to compressed output");
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ struct command * get_commands_from_file (const unsigned char * data, unsigned sh
|
|||||||
}
|
}
|
||||||
if (slack) *slack = *size - (rp - data);
|
if (slack) *slack = *size - (rp - data);
|
||||||
*size = current - result;
|
*size = current - result;
|
||||||
return realloc(result, *size * sizeof(struct command));
|
return realloc(result, (*size ? *size : 1) * sizeof(struct command));
|
||||||
error:
|
error:
|
||||||
free(result);
|
free(result);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -88,5 +88,5 @@ unsigned char * get_uncompressed_data (const struct command * commands, const un
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
*size = current - result;
|
*size = current - result;
|
||||||
return result;
|
return realloc(result, *size ? *size : 1);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user