summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2007-12-13 17:31:53 +0100
committerDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2007-12-13 17:31:53 +0100
commit9b8431a0032a528b230afa218f5debb4450c387e (patch)
treef3bbe793732112e2510427aaf8c31757d77e5081
parente051b536e737bd324997b2d4bb3b187d653dd628 (diff)
downloadxine-lib-9b8431a0032a528b230afa218f5debb4450c387e.tar.gz
xine-lib-9b8431a0032a528b230afa218f5debb4450c387e.tar.bz2
Free the temporary variables that are allocated, avoid memory leaks.
-rw-r--r--src/demuxers/demux_matroska.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/demuxers/demux_matroska.c b/src/demuxers/demux_matroska.c
index 5010a0d5d..80249605b 100644
--- a/src/demuxers/demux_matroska.c
+++ b/src/demuxers/demux_matroska.c
@@ -1181,8 +1181,10 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) {
case MATROSKA_ID_TR_CODECID: {
char *codec_id = malloc (elem.len + 1);
lprintf("CodecID\n");
- if (!ebml_read_ascii(ebml, &elem, codec_id))
+ if (!ebml_read_ascii(ebml, &elem, codec_id)) {
+ free(codec_id);
return 0;
+ }
codec_id[elem.len] = '\0';
track->codec_id = codec_id;
}
@@ -1191,8 +1193,10 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) {
case MATROSKA_ID_TR_CODECPRIVATE: {
uint8_t *codec_private = malloc (elem.len);
lprintf("CodecPrivate\n");
- if (!ebml_read_binary(ebml, &elem, codec_private))
+ if (!ebml_read_binary(ebml, &elem, codec_private)) {
+ free(codec_private);
return 0;
+ }
track->codec_private = codec_private;
track->codec_private_len = elem.len;
}
@@ -1201,8 +1205,10 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) {
case MATROSKA_ID_TR_LANGUAGE: {
char *language = malloc (elem.len + 1);
lprintf("Language\n");
- if (!ebml_read_ascii(ebml, &elem, language))
+ if (!ebml_read_ascii(ebml, &elem, language)) {
+ free(language);
return 0;
+ }
language[elem.len] = '\0';
track->language = language;
}