From 107b808021c7e463443b9c5f02a5824782f74e3a Mon Sep 17 00:00:00 2001 From: Justin Maggard Date: Wed, 2 Mar 2011 22:15:15 +0000 Subject: [PATCH] * Fix a bad free with some video files with AAC audio. --- metadata.c | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/metadata.c b/metadata.c index 615d792..13cfe6e 100644 --- a/metadata.c +++ b/metadata.c @@ -1075,29 +1075,37 @@ GetVideoMetadata(const char * path, char * name) m.dlna_pn = NULL; break; } - switch( audio_profile ) + if( audio_profile == PROFILE_AUDIO_AMR ) { - case PROFILE_AUDIO_AMR: - off += sprintf(m.dlna_pn+off, "AMR"); - break; - case PROFILE_AUDIO_AAC: - off += sprintf(m.dlna_pn+off, "AAC_"); - if( ctx->bit_rate < 540000 ) - { - off += sprintf(m.dlna_pn+off, "540"); - break; - } - else if( ctx->bit_rate < 940000 ) - { - off += sprintf(m.dlna_pn+off, "940"); - break; - } - default: + off += sprintf(m.dlna_pn+off, "AMR"); + } + else if( audio_profile == PROFILE_AUDIO_AAC ) + { + off += sprintf(m.dlna_pn+off, "AAC_"); + if( ctx->bit_rate < 540000 ) + { + off += sprintf(m.dlna_pn+off, "540"); + } + else if( ctx->bit_rate < 940000 ) + { + off += sprintf(m.dlna_pn+off, "940"); + } + else + { DPRINTF(E_DEBUG, L_METADATA, "No DLNA profile found for %s file %s\n", m.dlna_pn, basename(path)); free(m.dlna_pn); m.dlna_pn = NULL; break; + } + } + else + { + DPRINTF(E_DEBUG, L_METADATA, "No DLNA profile found for %s file %s\n", + m.dlna_pn, basename(path)); + free(m.dlna_pn); + m.dlna_pn = NULL; + break; } } else if( ctx->streams[video_stream]->codec->width <= 720 &&