diff --git a/NEWS b/NEWS
index 5ef6e21d2..6bcf328f8 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,7 @@
 ver 0.15.7 (2009/??/??)
 * input:
   - file: don't fall back to parent directory
+  - archive: fixed memory leak in error handler
 * tags:
   - id3: fix ID3v1 charset conversion
 * decoders:
diff --git a/src/input/archive_input_plugin.c b/src/input/archive_input_plugin.c
index 6239f4298..8e897f0c2 100644
--- a/src/input/archive_input_plugin.c
+++ b/src/input/archive_input_plugin.c
@@ -66,6 +66,7 @@ input_archive_open(struct input_stream *is, const char *pathname)
 
 	if (!opened) {
 		g_warning("open inarchive file %s failed\n\n",filename);
+		arplug->close(file);
 	} else {
 		is->ready = true;
 	}