From fb9bd53328e3ff57ea4b3cfee24068f9fb54927b Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 18 Jan 2010 09:57:53 +0100 Subject: input_stream: added function input_stream_deinit() All close() implementations must call this method. --- src/archive/bz2_archive_plugin.c | 2 ++ src/archive/iso9660_archive_plugin.c | 3 +++ src/archive/zzip_archive_plugin.c | 1 + src/input/curl_input_plugin.c | 1 + src/input/file_input_plugin.c | 1 + src/input/mms_input_plugin.c | 1 + src/input/rewind_input_plugin.c | 1 + src/input_stream.c | 2 -- src/input_stream.h | 6 ++++++ 9 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/archive/bz2_archive_plugin.c b/src/archive/bz2_archive_plugin.c index 75b4b1ece..67cc0055c 100644 --- a/src/archive/bz2_archive_plugin.c +++ b/src/archive/bz2_archive_plugin.c @@ -182,6 +182,7 @@ bz2_open_stream(struct archive_file *file, bis->base.seekable = false; if (!bz2_alloc(bis, error_r)) { + input_stream_deinit(&bis->base); g_free(bis); return NULL; } @@ -202,6 +203,7 @@ bz2_is_close(struct input_stream *is) bz2_close(&bis->archive->base); + input_stream_deinit(&bis->base); g_free(bis); } diff --git a/src/archive/iso9660_archive_plugin.c b/src/archive/iso9660_archive_plugin.c index 38003da94..30f8e7f52 100644 --- a/src/archive/iso9660_archive_plugin.c +++ b/src/archive/iso9660_archive_plugin.c @@ -212,6 +212,9 @@ iso9660_input_close(struct input_stream *is) g_free(iis->statbuf); iso9660_archive_close(&iis->archive->base); + + input_stream_deinit(&iis->base); + g_free(iis); } diff --git a/src/archive/zzip_archive_plugin.c b/src/archive/zzip_archive_plugin.c index 7e59a0935..fdf6b677c 100644 --- a/src/archive/zzip_archive_plugin.c +++ b/src/archive/zzip_archive_plugin.c @@ -171,6 +171,7 @@ zzip_input_close(struct input_stream *is) zzip_file_close(zis->file); zzip_archive_close(&zis->archive->base); + input_stream_deinit(&zis->base); g_free(zis); } diff --git a/src/input/curl_input_plugin.c b/src/input/curl_input_plugin.c index c54d994e8..1b759b4fc 100644 --- a/src/input/curl_input_plugin.c +++ b/src/input/curl_input_plugin.c @@ -195,6 +195,7 @@ input_curl_free(struct input_curl *c) g_queue_free(c->buffers); g_free(c->url); + input_stream_deinit(&c->base); g_free(c); } diff --git a/src/input/file_input_plugin.c b/src/input/file_input_plugin.c index 1c5813f88..173b7c2e8 100644 --- a/src/input/file_input_plugin.c +++ b/src/input/file_input_plugin.c @@ -136,6 +136,7 @@ input_file_close(struct input_stream *is) struct file_input_stream *fis = (struct file_input_stream *)is; close(fis->fd); + input_stream_deinit(&fis->base); g_free(fis); } diff --git a/src/input/mms_input_plugin.c b/src/input/mms_input_plugin.c index 5055eb05e..31a75fdba 100644 --- a/src/input/mms_input_plugin.c +++ b/src/input/mms_input_plugin.c @@ -103,6 +103,7 @@ input_mms_close(struct input_stream *is) struct input_mms *m = (struct input_mms *)is; mmsx_close(m->mms); + input_stream_deinit(&m->base); g_free(m); } diff --git a/src/input/rewind_input_plugin.c b/src/input/rewind_input_plugin.c index 2804dd1b2..e82d4ecb9 100644 --- a/src/input/rewind_input_plugin.c +++ b/src/input/rewind_input_plugin.c @@ -98,6 +98,7 @@ input_rewind_close(struct input_stream *is) input_stream_close(r->input); + input_stream_deinit(&r->base); g_free(r); } diff --git a/src/input_stream.c b/src/input_stream.c index 96c692176..e769adb92 100644 --- a/src/input_stream.c +++ b/src/input_stream.c @@ -99,8 +99,6 @@ input_stream_read(struct input_stream *is, void *ptr, size_t size, void input_stream_close(struct input_stream *is) { - g_free(is->mime); - is->plugin->close(is); } diff --git a/src/input_stream.h b/src/input_stream.h index e48f7eb26..05ef257f9 100644 --- a/src/input_stream.h +++ b/src/input_stream.h @@ -76,6 +76,12 @@ input_stream_init(struct input_stream *is, const struct input_plugin *plugin) is->mime = NULL; } +static inline void +input_stream_deinit(struct input_stream *is) +{ + g_free(is->mime); +} + /** * Opens a new input stream. You may not access it until the "ready" * flag is set. -- cgit v1.2.3