[libcamera-devel] [PATCH v2 10/24] libcamera: controls: Catch type mismatch in ControlInfoMap
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Nov 18 02:01:33 CET 2019
Hi Jacopo,
On Fri, Nov 15, 2019 at 05:21:29PM +0100, Jacopo Mondi wrote:
> On Fri, Nov 08, 2019 at 10:53:55PM +0200, Laurent Pinchart wrote:
> > ControlInfoMap requires the ControlId and ControlRange of each entry to
> > have identical types. Check for this and log an error if a mismatch is
> > detected.
> >
> > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > ---
> > src/libcamera/controls.cpp | 13 ++++++++++++-
> > 1 file changed, 12 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp
> > index eae0250a92e3..c488b2e4eb3f 100644
> > --- a/src/libcamera/controls.cpp
> > +++ b/src/libcamera/controls.cpp
> > @@ -571,8 +571,19 @@ ControlInfoMap::const_iterator ControlInfoMap::find(unsigned int id) const
> > void ControlInfoMap::generateIdmap()
> > {
> > idmap_.clear();
> > - for (const auto &ctrl : *this)
> > +
> > + for (const auto &ctrl : *this) {
> > + if (ctrl.first->type() != ctrl.second.min().type()) {
> > + LOG(Controls, Error)
> > + << "Control " << utils::hex(ctrl.first->id())
> > + << " type and range type mismatch";
> > + idmap_.clear();
> > + clear();
> > + return;
> > + }
> > +
>
> Should we just skip the control or actually abort the whole id map
> generation ?
As this is a serious error, I think we should abort it completely, in
order to show that something went wrong. If you think we should just
skip the control, we can discuss that.
> > idmap_[ctrl.first->id()] = ctrl.first;
> > + }
> > }
> >
> > /**
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list