On Wed, 31 Jul 2013 13:52:12 +0300, Martin Storsjö <[email protected]> wrote:
> 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.
> ---
> IMO it's better to fail cleanly here than to force all such callers
> to manually check the av_class member.
> ---
>  libavutil/opt.c |    3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/libavutil/opt.c b/libavutil/opt.c
> index f2b9473..cba5b29 100644
> --- a/libavutil/opt.c
> +++ b/libavutil/opt.c
> @@ -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;
> -- 
> 1.7.9.4
> 

Should be ok

-- 
Anton Khirnov
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to