aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/aiffdec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-05-06 17:39:31 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-05-06 17:39:31 +0200
commita565c7b7f2e03a769a821c49818c66474bfaf7fd (patch)
tree2825e64628a121b5e0ed67719f21372af9b7bfff /libavformat/aiffdec.c
parent423986fc09e3c674c2c8ac273d0ef094c379b497 (diff)
downloadffmpeg-a565c7b7f2e03a769a821c49818c66474bfaf7fd.tar.gz
aiffdec:Rewrite get_meta()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/aiffdec.c')
-rw-r--r--libavformat/aiffdec.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c
index cc2631448b..e691bba29d 100644
--- a/libavformat/aiffdec.c
+++ b/libavformat/aiffdec.c
@@ -68,19 +68,20 @@ static int get_tag(AVIOContext *pb, uint32_t * tag)
static void get_meta(AVFormatContext *s, const char *key, int size)
{
uint8_t *str = av_malloc(size+1);
- int res;
- if (!str) {
- avio_skip(s->pb, size);
- return;
- }
-
- res = avio_read(s->pb, str, size);
- if (res < 0)
- return;
+ if (str) {
+ int res = avio_read(s->pb, str, size);
+ if (res < 0){
+ av_free(str);
+ return;
+ }
+ size += (size&1)-res;
+ str[res] = 0;
+ av_metadata_set2(&s->metadata, key, str, AV_METADATA_DONT_STRDUP_VAL);
+ }else
+ size+= size&1;
- str[res] = 0;
- av_metadata_set2(&s->metadata, key, str, AV_METADATA_DONT_STRDUP_VAL);
+ avio_skip(s->pb, size);
}
/* Returns the number of sound data frames or negative on error */