diff --git a/libavutil/dict.c b/libavutil/dict.c index 7f23d5336a..6fb09399ba 100644 --- a/libavutil/dict.c +++ b/libavutil/dict.c @@ -145,11 +145,8 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value, m->elems[m->count].value = copy_value; m->count++; } else { - if (!m->count) { - av_freep(&m->elems); - av_freep(pm); - } - av_freep(©_key); + err = 0; + goto end; } return 0; @@ -157,12 +154,13 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value, enomem: err = AVERROR(ENOMEM); err_out: + av_free(copy_value); +end: if (m && !m->count) { av_freep(&m->elems); av_freep(pm); } av_free(copy_key); - av_free(copy_value); return err; }