Allow multiple zip_source_open calls on the same src.
diff --git a/lib/zip_source_free.c b/lib/zip_source_free.c index 715efb5..b990c20 100644 --- a/lib/zip_source_free.c +++ b/lib/zip_source_free.c
@@ -58,6 +58,7 @@ } if (ZIP_SOURCE_IS_OPEN_READING(src)) { + src->open_count = 1; /* force close */ zip_source_close(src); } if (ZIP_SOURCE_IS_OPEN_WRITING(src)) {
diff --git a/lib/zip_source_open.c b/lib/zip_source_open.c index 31f22bc..e0d845a 100644 --- a/lib/zip_source_open.c +++ b/lib/zip_source_open.c
@@ -34,8 +34,7 @@ #include "zipint.h" - -int +ZIP_EXTERN int zip_source_open(zip_source_t *src) { if (src->source_closed) { @@ -45,13 +44,10 @@ zip_error_set(&src->error, ZIP_ER_DELETED, 0); return -1; } - if (ZIP_SOURCE_IS_OPEN_READING(src)) { - zip_error_set(&src->error, ZIP_ER_INVAL, 0); - return -1; - } if (ZIP_SOURCE_IS_LAYERED(src)) { if (ZIP_SOURCE_IS_OPEN_READING(src->src)) { + /* TODO: check that src->src supports seeking */ src->src->open_count++; } else {