am 6871f937: am 400e7372: Merge "Add EndIteration method to free memory allocated"

* commit '6871f937f93c2a37344b928203ec613559584d33':
  Add EndIteration method to free memory allocated
diff --git a/include/ziparchive/zip_archive.h b/include/ziparchive/zip_archive.h
index 1877494..27a9796 100644
--- a/include/ziparchive/zip_archive.h
+++ b/include/ziparchive/zip_archive.h
@@ -130,10 +130,10 @@
 /*
  * Start iterating over all entries of a zip file. The order of iteration
  * is not guaranteed to be the same as the order of elements
- * in the central directory but is stable for a given zip file. |cookie|
- * must point to a writeable memory location, and will be set to the value
- * of an opaque cookie which can be used to make one or more calls to
- * Next.
+ * in the central directory but is stable for a given zip file. |cookie| will
+ * contain the value of an opaque cookie which can be used to make one or more
+ * calls to Next. All calls to StartIteration must be matched by a call to
+ * EndIteration to free any allocated memory.
  *
  * This method also accepts an optional prefix to restrict iteration to
  * entry names that start with |prefix|.
@@ -152,6 +152,12 @@
 int32_t Next(void* cookie, ZipEntry* data, ZipEntryName *name);
 
 /*
+ * End iteration over all entries of a zip file and frees the memory allocated
+ * in StartIteration.
+ */
+void EndIteration(void* cookie);
+
+/*
  * Uncompress and write an entry to an open file identified by |fd|.
  * |entry->uncompressed_length| bytes will be written to the file at
  * its current offset, and the file will be truncated at the end of
diff --git a/libziparchive/zip_archive.cc b/libziparchive/zip_archive.cc
index 6ec8f0d..366fb24 100644
--- a/libziparchive/zip_archive.cc
+++ b/libziparchive/zip_archive.cc
@@ -909,6 +909,12 @@
   return 0;
 }
 
+void EndIteration(void* cookie) {
+  if (cookie != NULL) {
+    free(cookie);
+  }
+}
+
 int32_t FindEntry(const ZipArchiveHandle handle, const char* entryName,
                   ZipEntry* data) {
   const ZipArchive* archive = (ZipArchive*) handle;