summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEwald Snel <esnel@users.sourceforge.net>2003-02-22 15:00:43 +0000
committerEwald Snel <esnel@users.sourceforge.net>2003-02-22 15:00:43 +0000
commiteec2212a0f4a2dc009de3c2f197ac26471d7958e (patch)
tree58cd0000edbf7376b70c2cdfb16487f8978fa998
parenta14b6a982c06e8225ccd29b399c0fe857cb6f136 (diff)
downloadxine-lib-eec2212a0f4a2dc009de3c2f197ac26471d7958e.tar.gz
xine-lib-eec2212a0f4a2dc009de3c2f197ac26471d7958e.tar.bz2
Fix memory leak
CVS patchset: 4253 CVS date: 2003/02/22 15:00:43
-rw-r--r--src/demuxers/demux_film.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/demuxers/demux_film.c b/src/demuxers/demux_film.c
index 237c8537d..062a94ab9 100644
--- a/src/demuxers/demux_film.c
+++ b/src/demuxers/demux_film.c
@@ -21,7 +21,7 @@
* For more information on the FILM file format, visit:
* http://www.pcisys.net/~melanson/codecs/
*
- * $Id: demux_film.c,v 1.58 2003/02/22 07:20:25 tmmm Exp $
+ * $Id: demux_film.c,v 1.59 2003/02/22 15:00:43 esnel Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -202,6 +202,9 @@ static int open_film_file(demux_film_t *film) {
/* load the rest of the FILM header */
if (film->input->read(film->input, film_header, film_header_size) !=
film_header_size) {
+ free (film->interleave_buffer);
+ free (film->sample_table);
+ free (film_header);
return 0;
}
@@ -219,6 +222,9 @@ static int open_film_file(demux_film_t *film) {
if (i + chunk_size > film_header_size) {
xine_log(film->stream->xine, XINE_LOG_MSG,
_("invalid FILM chunk size\n"));
+ free (film->interleave_buffer);
+ free (film->sample_table);
+ free (film_header);
return 0;
}
@@ -360,14 +366,20 @@ static int open_film_file(demux_film_t *film) {
/* allocate enough space in the interleave preload buffer for the
* first chunk (which will be more than enough for successive chunks) */
- if (film->audio_type)
+ if (film->audio_type) {
+ if (film->interleave_buffer)
+ free(film->interleave_buffer);
film->interleave_buffer =
xine_xmalloc(film->sample_table[0].sample_size);
+ }
break;
default:
xine_log(film->stream->xine, XINE_LOG_MSG,
_("unrecognized FILM chunk\n"));
+ free (film->interleave_buffer);
+ free (film->sample_table);
+ free (film_header);
return 0;
}
@@ -376,6 +388,8 @@ static int open_film_file(demux_film_t *film) {
film->total_time = largest_pts / 90;
+ free (film_header);
+
return 1;
}