[libcamera-devel] libcamera: pipeline: simple: Check if converter_ is a nullptr
Suhrid Subramaniam
Suhrid.Subramaniam at mediatek.com
Mon Feb 27 21:28:51 CET 2023
An HTML attachment was scrubbed...
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20230227/8a3553df/attachment-0001.htm>
-------------- next part --------------
Hi Laurent, Kieran,
Thank you.
I will add another patch to check the isValid() condition in ::create() itself.
Suhrid.
-----Original Message-----
From: Kieran Bingham <kieran.bingham at ideasonboard.com>
Sent: Monday, February 27, 2023 3:25 AM
To: Laurent Pinchart <laurent.pinchart at ideasonboard.com>; Laurent Pinchart via libcamera-devel <libcamera-devel at lists.libcamera.org>; Umang Jain <umang.jain at ideasonboard.com>
Cc: Suhrid Subramaniam <Suhrid.Subramaniam at mediatek.com>; libcamera-devel at lists.libcamera.org
Subject: Re: [libcamera-devel] libcamera: pipeline: simple: Check if converter_ is a nullptr
Quoting Laurent Pinchart via libcamera-devel (2023-02-26 15:41:36)
> On Fri, Feb 24, 2023 at 11:52:35AM +0530, Umang Jain via libcamera-devel wrote:
> > Hi Suhrid,
> >
> > Thank you for the patch.
> >
> > On 2/24/23 2:17 AM, Suhrid Subramaniam via libcamera-devel wrote:
> > > - If no converter is found, converter_ becomes a nullptr and
> > > !converter_->isValid() causes a segmentation fault.
> > > - Avoid this by checking if converter_ is a nullptr.
> > >
> > > Signed-off-by: Suhrid Subramaniam
> > > <suhrid.subramaniam at mediatek.com>
> > > ---
> > > src/libcamera/pipeline/simple/simple.cpp | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/src/libcamera/pipeline/simple/simple.cpp
> > > b/src/libcamera/pipeline/simple/simple.cpp
> > > index 24ded4db..2423ec10 100644
> > > --- a/src/libcamera/pipeline/simple/simple.cpp
> > > +++ b/src/libcamera/pipeline/simple/simple.cpp
> > > @@ -493,7 +493,7 @@ int SimpleCameraData::init()
> > > MediaDevice *converter = pipe->converter();
> > > if (converter) {
> > > converter_ = ConverterFactoryBase::create(converter);
> > > - if (!converter_->isValid()) {
> > > + if (!converter_) {
> >
> > it seems this change will drop the validity check so maybe :
> > if (!converter_ && converter_->isValid()) {
> >
> > The error message below might be need to get tweaked a bit.
> >
> > On the other hand, I wonder if ConverterFactoryBase::create() should
> > be allowed? to return a non-valid converter pointer or not.
>
> I don't see a use case for that, so I'd rather check for !valid in
> ::create() and return nullptr in that case.
Yup - that answers my question. If we don't use isValid() it should be dropped.
But if it's removed here, but should be kept, please add it into ::create(). Probably as a patch preceeding this one.
--
Kieran
>
> > > LOG(SimplePipeline, Warning)
> > > << "Failed to create converter, disabling format conversion";
> > > converter_.reset();
>
> --
> Regards,
>
> Laurent Pinchart
More information about the libcamera-devel
mailing list