[FFmpeg-cvslog] dict.c: empty dictionaries should be a NULL pointer.

Reimar Döffinger git at videolan.org
Sat Aug 16 12:52:08 CEST 2014


ffmpeg | branch: master | Reimar Döffinger <Reimar.Doeffinger at gmx.de> | Tue Jul 29 21:23:57 2014 +0200| [bddc592001bd041511f4086a7d15611ec695e606] | committer: Reimar Döffinger

dict.c: empty dictionaries should be a NULL pointer.

Ensure this is even the case if they are empty because
we failed adding the first entry.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger at gmx.de>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bddc592001bd041511f4086a7d15611ec695e606
---

 libavutil/dict.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/libavutil/dict.c b/libavutil/dict.c
index 9fdc6d6..c17ce7a 100644
--- a/libavutil/dict.c
+++ b/libavutil/dict.c
@@ -91,7 +91,7 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value,
         AVDictionaryEntry *tmp = av_realloc(m->elems,
                                             (m->count + 1) * sizeof(*m->elems));
         if (!tmp)
-            return AVERROR(ENOMEM);
+            goto err_out;
         m->elems = tmp;
     }
     if (value) {
@@ -105,7 +105,7 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value,
             int len = strlen(oldval) + strlen(value) + 1;
             char *newval = av_mallocz(len);
             if (!newval)
-                return AVERROR(ENOMEM);
+                goto err_out;
             av_strlcat(newval, oldval, len);
             av_freep(&oldval);
             av_strlcat(newval, value, len);
@@ -120,6 +120,13 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value,
     }
 
     return 0;
+
+err_out:
+    if (!m->count) {
+        av_free(m->elems);
+        av_freep(pm);
+    }
+    return AVERROR(ENOMEM);
 }
 
 int av_dict_set_int(AVDictionary **pm, const char *key, int64_t value,



More information about the ffmpeg-cvslog mailing list