From a726d7fd4e0b112b276678ea9da9c9b3097e8b8f Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 6 Jul 2011 19:56:58 +0200 Subject: [PATCH] AVOptions: in av_opt_find() don't return named constants unless unit is specified. That is, unless the caller explicitly asks for them. Prevents conflict between e.g. the 'loop' option in img2 demuxer and 'loop' flag in AVCodecContext. --- libavutil/opt.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libavutil/opt.c b/libavutil/opt.c index 65e02135d5..9c601a2cbb 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -573,8 +573,9 @@ const AVOption *av_opt_find(void *obj, const char *name, const char *unit, return o; while (o = av_next_option(obj, o)) { - if (!strcmp(o->name, name) && (!unit || (o->unit && !strcmp(o->unit, unit))) && - (o->flags & opt_flags) == opt_flags) + if (!strcmp(o->name, name) && (o->flags & opt_flags) == opt_flags && + ((!unit && o->type != FF_OPT_TYPE_CONST) || + (unit && o->unit && !strcmp(o->unit, unit)))) return o; } return NULL;