On 06/03/14 19:40, Patrice Clement wrote:
> ---
> libavutil/dict.c | 53 +++++++++++++++++++++++++++++++----------------------
> 1 file changed, 31 insertions(+), 22 deletions(-)
>
> diff --git a/libavutil/dict.c b/libavutil/dict.c
> index 9ac4831..86db8af 100644
> --- a/libavutil/dict.c
> +++ b/libavutil/dict.c
> @@ -32,43 +32,51 @@ struct AVDictionary {
>
> int av_dict_count(const AVDictionary *m)
> {
> - return m ? m->count : 0;
> + return m
> + ? m->count
> + : 0;
> }
>
This hunk should be dropped.
> -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(; 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])
> + 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;
> + 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,17 +86,18 @@ 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));
Probably we could use the av_reallocp_array, willing to provide a patch
for it?
> + if (tmp) {
> m->elems = tmp;
> } else
> return AVERROR(ENOMEM);
> }
> if (value) {
> if (flags & AV_DICT_DONT_STRDUP_KEY) {
> - m->elems[m->count].key = key;
> + m->elems[m->count].key = key;
> } else
> - m->elems[m->count].key = av_strdup(key );
> + m->elems[m->count].key = av_strdup(key);
> if (flags & AV_DICT_DONT_STRDUP_VAL) {
> m->elems[m->count].value = value;
> } else if (oldval && flags & AV_DICT_APPEND) {
> @@ -161,7 +170,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);
> }
>
The rest looks ok, thanks. I'll push it in a bit if Diego doesn't have
better ideas.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel