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;