From 2238f0536fa7bb4ad6d59ff38ed040dc4d81ff64 Mon Sep 17 00:00:00 2001 From: Ewald Snel Date: Tue, 23 Apr 2002 13:30:42 +0000 Subject: Fix memory leaks by disposing input, demux and decoder plugins at exit - add dispose() function to all decoder plugin structures CVS patchset: 1763 CVS date: 2002/04/23 13:30:42 --- src/input/input_file.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/input/input_file.c') diff --git a/src/input/input_file.c b/src/input/input_file.c index de98d55a8..9aa4e7ce9 100644 --- a/src/input/input_file.c +++ b/src/input/input_file.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: input_file.c,v 1.43 2002/04/16 14:26:46 guenter Exp $ + * $Id: input_file.c,v 1.44 2002/04/23 13:30:43 esnel Exp $ */ #ifdef HAVE_CONFIG_H @@ -277,6 +277,9 @@ static int file_plugin_open (input_plugin_t *this_gen, char *mrl) { char *filename, *subtitle; file_input_plugin_t *this = (file_input_plugin_t *) this_gen; + if (this->mrl) + free (this->mrl); + this->mrl = strdup(mrl); /* FIXME: small memory leak */ if (!strncasecmp (this->mrl, "file:",5)) @@ -833,6 +836,16 @@ static int file_plugin_get_optional_data (input_plugin_t *this_gen, return INPUT_OPTIONAL_UNSUPPORTED; } +static int file_plugin_dispose (input_plugin_t *this_gen ) { + file_input_plugin_t *this = (file_input_plugin_t *) this_gen; + + if (this->mrl) + free (this->mrl); + + free (this->mrls); + free (this); +} + /* * */ @@ -873,6 +886,7 @@ input_plugin_t *init_input_plugin (int iface, xine_t *xine) { this->input_plugin.get_identifier = file_plugin_get_identifier; this->input_plugin.get_autoplay_list = NULL; this->input_plugin.get_optional_data = file_plugin_get_optional_data; + this->input_plugin.dispose = file_plugin_dispose; this->input_plugin.is_branch_possible = NULL; this->fh = -1; -- cgit v1.2.3