|
|
|
@ -75,6 +75,8 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value, |
|
|
|
|
|
|
|
|
|
if (!m) |
|
|
|
|
m = *pm = av_mallocz(sizeof(*m)); |
|
|
|
|
if (!m) |
|
|
|
|
goto err_out; |
|
|
|
|
|
|
|
|
|
if (tag) { |
|
|
|
|
if (flags & AV_DICT_DONT_OVERWRITE) { |
|
|
|
@ -100,6 +102,8 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value, |
|
|
|
|
m->elems[m->count].key = (char*)(intptr_t)key; |
|
|
|
|
else |
|
|
|
|
m->elems[m->count].key = av_strdup(key); |
|
|
|
|
if (!m->elems[m->count].key) |
|
|
|
|
goto err_out; |
|
|
|
|
if (flags & AV_DICT_DONT_STRDUP_VAL) { |
|
|
|
|
m->elems[m->count].value = (char*)(intptr_t)value; |
|
|
|
|
} else if (oldval && flags & AV_DICT_APPEND) { |
|
|
|
@ -123,7 +127,7 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value, |
|
|
|
|
return 0; |
|
|
|
|
|
|
|
|
|
err_out: |
|
|
|
|
if (!m->count) { |
|
|
|
|
if (m && !m->count) { |
|
|
|
|
av_free(m->elems); |
|
|
|
|
av_freep(pm); |
|
|
|
|
} |
|
|
|
|