]> git.sesse.net Git - ffmpeg/commitdiff
avopt: Check whether the object actually has got an AVClass
authorMartin Storsjö <martin@martin.st>
Mon, 29 Jul 2013 11:53:01 +0000 (14:53 +0300)
committerMartin Storsjö <martin@martin.st>
Wed, 31 Jul 2013 18:31:14 +0000 (21:31 +0300)
AVIOContext has got an av_class member that only gets set if
opening the context using avio_open2, but not if allocating a
custom IO context. A caller that wants to read AVOptions from
an AVIOContext (recursively using AV_OPT_SEARCH_CHILDREN) may
not know if the AVIOContext actually has got a class set or not.

Signed-off-by: Martin Storsjö <martin@martin.st>
libavutil/opt.c

index f2b947337e9a3e4b33b4652d35415b6105e49cf0..cba5b29ac6f3a6f428ed27573a720cf0d14c625c 100644 (file)
@@ -650,6 +650,9 @@ const AVOption *av_opt_find2(void *obj, const char *name, const char *unit,
     const AVClass  *c = *(AVClass**)obj;
     const AVOption *o = NULL;
 
+    if (!c)
+        return NULL;
+
     if (search_flags & AV_OPT_SEARCH_CHILDREN) {
         if (search_flags & AV_OPT_SEARCH_FAKE_OBJ) {
             const AVClass *child = NULL;