diff --git a/libavutil/dict.c b/libavutil/dict.c index 3a0e84cd40..0bf54b5b93 100644 --- a/libavutil/dict.c +++ b/libavutil/dict.c @@ -35,40 +35,47 @@ int av_dict_count(const AVDictionary *m) return m ? m->count : 0; } -AVDictionaryEntry * -av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags) +AVDictionaryEntry *av_dict_get(AVDictionary *m, const char *key, + const AVDictionaryEntry *prev, int flags) { unsigned int i, j; - if(!m) + if (!m) return NULL; - if(prev) i= prev - m->elems + 1; - else i= 0; + if (prev) + i = prev - m->elems + 1; + else + i = 0; - for(; icount; i++){ - const char *s= m->elems[i].key; - if(flags & AV_DICT_MATCH_CASE) for(j=0; s[j] == key[j] && key[j]; j++); - else for(j=0; av_toupper(s[j]) == av_toupper(key[j]) && key[j]; j++); - if(key[j]) + for (; i < m->count; i++) { + const char *s = m->elems[i].key; + if (flags & AV_DICT_MATCH_CASE) + for (j = 0; s[j] == key[j] && key[j]; j++) + ; + else + for (j = 0; av_toupper(s[j]) == av_toupper(key[j]) && key[j]; j++) + ; + if (key[j]) continue; - if(s[j] && !(flags & AV_DICT_IGNORE_SUFFIX)) + if (s[j] && !(flags & AV_DICT_IGNORE_SUFFIX)) continue; return &m->elems[i]; } return NULL; } -int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags) +int av_dict_set(AVDictionary **pm, const char *key, const char *value, + int flags) { - AVDictionary *m = *pm; + AVDictionary *m = *pm; AVDictionaryEntry *tag = av_dict_get(m, key, NULL, flags); char *oldval = NULL; - if(!m) + if (!m) m = *pm = av_mallocz(sizeof(*m)); - if(tag) { + if (tag) { if (flags & AV_DICT_DONT_OVERWRITE) return 0; if (flags & AV_DICT_APPEND) @@ -78,16 +85,17 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags av_free(tag->key); *tag = m->elems[--m->count]; } else { - AVDictionaryEntry *tmp = av_realloc(m->elems, (m->count+1) * sizeof(*m->elems)); - if(tmp) { + AVDictionaryEntry *tmp = av_realloc(m->elems, + (m->count + 1) * sizeof(*m->elems)); + if (tmp) m->elems = tmp; - } else + else return AVERROR(ENOMEM); } if (value) { - if (flags & AV_DICT_DONT_STRDUP_KEY) { + if (flags & AV_DICT_DONT_STRDUP_KEY) m->elems[m->count].key = (char*)(intptr_t)key; - } else + else m->elems[m->count].key = av_strdup(key); if (flags & AV_DICT_DONT_STRDUP_VAL) { m->elems[m->count].value = (char*)(intptr_t)value; @@ -164,7 +172,7 @@ void av_dict_free(AVDictionary **pm) AVDictionary *m = *pm; if (m) { - while(m->count--) { + while (m->count--) { av_free(m->elems[m->count].key); av_free(m->elems[m->count].value); }