Bug fixes for adding extra fields to existing ones.
diff --git a/lib/zip_extra_field.c b/lib/zip_extra_field.c index d29cd76..360193b 100644 --- a/lib/zip_extra_field.c +++ b/lib/zip_extra_field.c
@@ -60,6 +60,8 @@ if (prev) prev->next = def; prev = def; + + ef = ef->next; } return head;
diff --git a/lib/zip_extra_field_api.c b/lib/zip_extra_field_api.c index 05df26a..9f923fa 100644 --- a/lib/zip_extra_field_api.c +++ b/lib/zip_extra_field_api.c
@@ -284,9 +284,9 @@ else de->extra_fields = ef_new; } - else if (ef) { - ef_new->next = ef->next; - ef->next = ef_new; + else if (ef_prev) { + ef_new->next = ef_prev->next; + ef_prev->next = ef_new; } else de->extra_fields = ef_new; @@ -324,7 +324,7 @@ } if (e->orig && e->orig->extra_fields) { - if ((e->changes->extra_fields=_zip_ef_clone(e->orig->extra_fields, &za->error)) == 0) + if ((e->changes->extra_fields=_zip_ef_clone(e->orig->extra_fields, &za->error)) == NULL) return -1; } e->changes->changed |= ZIP_DIRENT_EXTRA_FIELD;