Implement I/O abstraction layer. Finally.
diff --git a/lib/zip_discard.c b/lib/zip_discard.c
index 3fc6d8f..2ca11df 100644
--- a/lib/zip_discard.c
+++ b/lib/zip_discard.c
@@ -49,11 +49,10 @@
if (za == NULL)
return;
- if (za->zn)
- free(za->zn);
-
- if (za->zp)
- fclose(za->zp);
+ if (za->src) {
+ zip_source_close(za->src);
+ zip_source_free(za->src);
+ }
free(za->default_password);
_zip_string_free(za->comment_orig);
@@ -65,12 +64,12 @@
free(za->entry);
}
- for (i=0; i<za->nsource; i++) {
- _zip_source_filep_invalidate(za->source[i]);
+ for (i=0; i<za->nopen_source; i++) {
+ _zip_source_invalidate(za->open_source[i]);
}
+ free(za->open_source);
- _zip_error_fini(&za->error);
- free(za->source);
+ zip_error_fini(&za->error);
free(za);