[libcamera-devel] libcamera: pipeline: simple: Check if converter_ is a nullptr
Suhrid Subramaniam
Suhrid.Subramaniam at mediatek.com
Fri Feb 24 21:45:59 CET 2023
An HTML attachment was scrubbed...
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20230224/df5ee68c/attachment.htm>
-------------- next part --------------
Hi Umang,
Thanks for reviewing the patch. This is my first time using git-email so please let me know if I need to change my formatting : )
My comments are inline.
-----Original Message-----
From: Umang Jain <umang.jain at ideasonboard.com>
Sent: Thursday, February 23, 2023 10:23 PM
To: Suhrid Subramaniam <suhridsubramaniam at gmail.com>; libcamera-devel at lists.libcamera.org
Cc: Suhrid Subramaniam <Suhrid.Subramaniam at mediatek.com>
Subject: Re: [libcamera-devel] libcamera: pipeline: simple: Check if converter_ is a nullptr
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()) {
For situations where converter_ is a nullptr, the && operation will execute converter_->isValid() and generate a segmentation fault.
I'd originally considered updating the converter_ check to the following:
if(!converter_ || converter_->isValid())
Laurent said that it probably doesn't make much sense for the converter factory to return a non-null but invalid converter.
The error message below might be need to get tweaked a bit.
Yep sure. Any specific format you recommend for the error message?
On the other hand, I wonder if ConverterFactoryBase::create() should be allowed? to return a non-valid converter pointer or not.
> LOG(SimplePipeline, Warning)
> << "Failed to create converter, disabling format conversion";
> converter_.reset();
I was thinking of some sort of exception handling/ modification to isValid but the former needs to be implemented in simple.cpp which would have the same effect as !converter_ and the latter would not work if converter_ is a nullptr. Anything you'd recommend?
Thanks!
More information about the libcamera-devel
mailing list