Regression since 19e9a203b7b8e613840b055cdf68303a4fb84581. Signed-off-by: James Almer <jamr...@gmail.com> --- libavutil/dict.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/libavutil/dict.c b/libavutil/dict.c index f7dcd07eeb..fafb454fd3 100644 --- a/libavutil/dict.c +++ b/libavutil/dict.c @@ -99,27 +99,28 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value, err = AVERROR(EINVAL); goto err_out; } + if (flags & AV_DICT_DONT_STRDUP_KEY) + copy_key = (void *)key; + else + copy_key = av_strdup(key); + if (!copy_key || (value && !copy_value)) + goto enomem; + if (!(flags & AV_DICT_MULTIKEY)) { tag = av_dict_get(m, key, NULL, flags); } else if (flags & AV_DICT_DEDUP) { while ((tag = av_dict_get(m, key, tag, flags))) { if ((!value && !tag->value) || (value && tag->value && !strcmp(value, tag->value))) { - if (flags & AV_DICT_DONT_STRDUP_KEY) - av_free((void*)key); - if (flags & AV_DICT_DONT_STRDUP_VAL) - av_free((void*)value); + av_free(copy_key); + av_free(copy_value); return 0; } } } - if (flags & AV_DICT_DONT_STRDUP_KEY) - copy_key = (void *)key; - else - copy_key = av_strdup(key); if (!m) m = *pm = av_mallocz(sizeof(*m)); - if (!m || !copy_key || (value && !copy_value)) + if (!m) goto enomem; if (tag) { -- 2.49.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".