diff options
author | Clément Bœsch <ubitux@gmail.com> | 2012-05-12 22:39:30 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2012-09-17 15:48:20 +0200 |
commit | 049ce4facbd0565baeec628083ceacb5035295d4 (patch) | |
tree | 294ea7157cd745f302bc42d6aa13d6805be0ef05 /libavformat/id3v2.c | |
parent | ffdd2e9144f45082ce31f93c20136ade6ed51a54 (diff) | |
download | ffmpeg-049ce4facbd0565baeec628083ceacb5035295d4.tar.gz |
id3v2: strdup the genre name explicitly.
It would have been done anyway in the av_dict_set() call.
This simplifies the code and avoid a warning because of assigning a
const string from ff_id3v1_genre_str to a non-const variable.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'libavformat/id3v2.c')
-rw-r--r-- | libavformat/id3v2.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c index da027800e1..012d7933a8 100644 --- a/libavformat/id3v2.c +++ b/libavformat/id3v2.c @@ -262,7 +262,7 @@ static int decode_str(AVFormatContext *s, AVIOContext *pb, int encoding, static void read_ttag(AVFormatContext *s, AVIOContext *pb, int taglen, const char *key) { uint8_t *dst; - int encoding, dict_flags = AV_DICT_DONT_OVERWRITE; + int encoding, dict_flags = AV_DICT_DONT_OVERWRITE | AV_DICT_DONT_STRDUP_VAL; unsigned genre; if (taglen < 1) @@ -280,7 +280,7 @@ static void read_ttag(AVFormatContext *s, AVIOContext *pb, int taglen, const cha && (sscanf(dst, "(%d)", &genre) == 1 || sscanf(dst, "%d", &genre) == 1) && genre <= ID3v1_GENRE_MAX) { av_freep(&dst); - dst = ff_id3v1_genre_str[genre]; + dst = av_strdup(ff_id3v1_genre_str[genre]); } else if (!(strcmp(key, "TXXX") && strcmp(key, "TXX"))) { /* dst now contains the key, need to get value */ key = dst; @@ -289,11 +289,8 @@ static void read_ttag(AVFormatContext *s, AVIOContext *pb, int taglen, const cha av_freep(&key); return; } - dict_flags |= AV_DICT_DONT_STRDUP_VAL | AV_DICT_DONT_STRDUP_KEY; - } - else if (*dst) - dict_flags |= AV_DICT_DONT_STRDUP_VAL; - else + dict_flags |= AV_DICT_DONT_STRDUP_KEY; + } else if (!*dst) av_freep(&dst); if (dst) |