lavu/dict: check for malloc failures

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
wm4 2014-12-12 18:15:39 +01:00 committed by Michael Niedermayer
parent a66893ac94
commit a963fdb0ea
1 changed files with 5 additions and 1 deletions

View File

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