Update zip.c

Fixes https://github.com/kuba--/zip/issues/270
This commit is contained in:
Kuba Podgórski 2022-07-07 21:56:32 +02:00
parent e14fef2108
commit 42151612e8

View File

@ -692,12 +692,12 @@ static int zip_central_dir_delete(mz_zip_internal_state *pState,
int end = 0; int end = 0;
int d_num = 0; int d_num = 0;
while (i < entry_num) { while (i < entry_num) {
while ((!deleted_entry_index_array[i]) && (i < entry_num)) { while ((i < entry_num) && (!deleted_entry_index_array[i])) {
i++; i++;
} }
begin = i; begin = i;
while ((deleted_entry_index_array[i]) && (i < entry_num)) { while ((i < entry_num) && (deleted_entry_index_array[i])) {
i++; i++;
} }
end = i; end = i;
@ -706,14 +706,14 @@ static int zip_central_dir_delete(mz_zip_internal_state *pState,
i = 0; i = 0;
while (i < entry_num) { while (i < entry_num) {
while ((!deleted_entry_index_array[i]) && (i < entry_num)) { while ((i < entry_num) && (!deleted_entry_index_array[i])) {
i++; i++;
} }
begin = i; begin = i;
if (begin == entry_num) { if (begin == entry_num) {
break; break;
} }
while ((deleted_entry_index_array[i]) && (i < entry_num)) { while ((i < entry_num) && (deleted_entry_index_array[i])) {
i++; i++;
} }
end = i; end = i;
@ -759,13 +759,13 @@ static ssize_t zip_entries_delete_mark(struct zip_t *zip,
} }
while (i < entry_num) { while (i < entry_num) {
while ((entry_mark[i].type == MZ_KEEP) && (i < entry_num)) { while ((i < entry_num) && (entry_mark[i].type == MZ_KEEP)) {
writen_num += entry_mark[i].lf_length; writen_num += entry_mark[i].lf_length;
read_num = writen_num; read_num = writen_num;
i++; i++;
} }
while ((entry_mark[i].type == MZ_DELETE) && (i < entry_num)) { while ((i < entry_num) && (entry_mark[i].type == MZ_DELETE)) {
deleted_entry_flag_array[i] = MZ_TRUE; deleted_entry_flag_array[i] = MZ_TRUE;
read_num += entry_mark[i].lf_length; read_num += entry_mark[i].lf_length;
deleted_length += entry_mark[i].lf_length; deleted_length += entry_mark[i].lf_length;
@ -773,7 +773,7 @@ static ssize_t zip_entries_delete_mark(struct zip_t *zip,
deleted_entry_num++; deleted_entry_num++;
} }
while ((entry_mark[i].type == MZ_MOVE) && (i < entry_num)) { while ((i < entry_num) && (entry_mark[i].type == MZ_MOVE)) {
move_length += entry_mark[i].lf_length; move_length += entry_mark[i].lf_length;
mz_uint8 *p = &MZ_ZIP_ARRAY_ELEMENT( mz_uint8 *p = &MZ_ZIP_ARRAY_ELEMENT(
&pState->m_central_dir, mz_uint8, &pState->m_central_dir, mz_uint8,