Message ID | 20221003212128.32429-4-laurent.pinchart@ideasonboard.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
Hi Laurent, Thanks for the patch. On 10/3/22 23:21, Laurent Pinchart via libcamera-devel wrote: > Avoid naked pointer with memory allocation by returning a unique_ptr > from CameraSensorHelperFactory::createInstance(), in order to increase > memory allocation safety. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > src/ipa/libipa/camera_sensor_helper.cpp | 7 +++---- > src/ipa/libipa/camera_sensor_helper.h | 6 +++--- > 2 files changed, 6 insertions(+), 7 deletions(-) > > diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp > index fde9bf5b8892..3a7d701d8616 100644 > --- a/src/ipa/libipa/camera_sensor_helper.cpp > +++ b/src/ipa/libipa/camera_sensor_helper.cpp > @@ -261,8 +261,7 @@ std::unique_ptr<CameraSensorHelper> CameraSensorHelperFactory::create(const std: > if (name != factory->name_) > continue; > > - CameraSensorHelper *helper = factory->createInstance(); > - return std::unique_ptr<CameraSensorHelper>(helper); > + return factory->createInstance(); > } > > return nullptr; > @@ -307,8 +306,8 @@ std::vector<CameraSensorHelperFactory *> &CameraSensorHelperFactory::factories() > * macro. It creates a camera sensor helper instance associated with the camera > * sensor model. > * > - * \return A pointer to a newly constructed instance of the CameraSensorHelper > - * subclass corresponding to the factory > + * \return A unique pointer to a newly constructed instance of the > + * CameraSensorHelper subclass corresponding to the factory > */ > > /** > diff --git a/src/ipa/libipa/camera_sensor_helper.h b/src/ipa/libipa/camera_sensor_helper.h > index 410156efb2ea..21ee43cc9f9f 100644 > --- a/src/ipa/libipa/camera_sensor_helper.h > +++ b/src/ipa/libipa/camera_sensor_helper.h > @@ -73,7 +73,7 @@ private: > > static void registerType(CameraSensorHelperFactory *factory); > > - virtual CameraSensorHelper *createInstance() const = 0; > + virtual std::unique_ptr<CameraSensorHelper> createInstance() const = 0; > > std::string name_; > }; > @@ -85,9 +85,9 @@ public: \ > helper##Factory() : CameraSensorHelperFactory(name) {} \ > \ > private: \ > - CameraSensorHelper *createInstance() const \ > + std::unique_ptr<CameraSensorHelper> createInstance() const \ > { \ > - return new helper(); \ > + return std::make_unique<helper>(); \ > } \ > }; \ > static helper##Factory global_##helper##Factory; Reviewed-by: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
Hi Laurent On Tue, Oct 04, 2022 at 12:21:23AM +0300, Laurent Pinchart via libcamera-devel wrote: > Avoid naked pointer with memory allocation by returning a unique_ptr > from CameraSensorHelperFactory::createInstance(), in order to increase > memory allocation safety. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Looks fine Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> > --- > src/ipa/libipa/camera_sensor_helper.cpp | 7 +++---- > src/ipa/libipa/camera_sensor_helper.h | 6 +++--- > 2 files changed, 6 insertions(+), 7 deletions(-) > > diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp > index fde9bf5b8892..3a7d701d8616 100644 > --- a/src/ipa/libipa/camera_sensor_helper.cpp > +++ b/src/ipa/libipa/camera_sensor_helper.cpp > @@ -261,8 +261,7 @@ std::unique_ptr<CameraSensorHelper> CameraSensorHelperFactory::create(const std: > if (name != factory->name_) > continue; > > - CameraSensorHelper *helper = factory->createInstance(); > - return std::unique_ptr<CameraSensorHelper>(helper); > + return factory->createInstance(); > } > > return nullptr; > @@ -307,8 +306,8 @@ std::vector<CameraSensorHelperFactory *> &CameraSensorHelperFactory::factories() > * macro. It creates a camera sensor helper instance associated with the camera > * sensor model. > * > - * \return A pointer to a newly constructed instance of the CameraSensorHelper > - * subclass corresponding to the factory > + * \return A unique pointer to a newly constructed instance of the > + * CameraSensorHelper subclass corresponding to the factory > */ > > /** > diff --git a/src/ipa/libipa/camera_sensor_helper.h b/src/ipa/libipa/camera_sensor_helper.h > index 410156efb2ea..21ee43cc9f9f 100644 > --- a/src/ipa/libipa/camera_sensor_helper.h > +++ b/src/ipa/libipa/camera_sensor_helper.h > @@ -73,7 +73,7 @@ private: > > static void registerType(CameraSensorHelperFactory *factory); > > - virtual CameraSensorHelper *createInstance() const = 0; > + virtual std::unique_ptr<CameraSensorHelper> createInstance() const = 0; > > std::string name_; > }; > @@ -85,9 +85,9 @@ public: \ > helper##Factory() : CameraSensorHelperFactory(name) {} \ > \ > private: \ > - CameraSensorHelper *createInstance() const \ > + std::unique_ptr<CameraSensorHelper> createInstance() const \ > { \ > - return new helper(); \ > + return std::make_unique<helper>(); \ > } \ > }; \ > static helper##Factory global_##helper##Factory; > -- > Regards, > > Laurent Pinchart >
diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp index fde9bf5b8892..3a7d701d8616 100644 --- a/src/ipa/libipa/camera_sensor_helper.cpp +++ b/src/ipa/libipa/camera_sensor_helper.cpp @@ -261,8 +261,7 @@ std::unique_ptr<CameraSensorHelper> CameraSensorHelperFactory::create(const std: if (name != factory->name_) continue; - CameraSensorHelper *helper = factory->createInstance(); - return std::unique_ptr<CameraSensorHelper>(helper); + return factory->createInstance(); } return nullptr; @@ -307,8 +306,8 @@ std::vector<CameraSensorHelperFactory *> &CameraSensorHelperFactory::factories() * macro. It creates a camera sensor helper instance associated with the camera * sensor model. * - * \return A pointer to a newly constructed instance of the CameraSensorHelper - * subclass corresponding to the factory + * \return A unique pointer to a newly constructed instance of the + * CameraSensorHelper subclass corresponding to the factory */ /** diff --git a/src/ipa/libipa/camera_sensor_helper.h b/src/ipa/libipa/camera_sensor_helper.h index 410156efb2ea..21ee43cc9f9f 100644 --- a/src/ipa/libipa/camera_sensor_helper.h +++ b/src/ipa/libipa/camera_sensor_helper.h @@ -73,7 +73,7 @@ private: static void registerType(CameraSensorHelperFactory *factory); - virtual CameraSensorHelper *createInstance() const = 0; + virtual std::unique_ptr<CameraSensorHelper> createInstance() const = 0; std::string name_; }; @@ -85,9 +85,9 @@ public: \ helper##Factory() : CameraSensorHelperFactory(name) {} \ \ private: \ - CameraSensorHelper *createInstance() const \ + std::unique_ptr<CameraSensorHelper> createInstance() const \ { \ - return new helper(); \ + return std::make_unique<helper>(); \ } \ }; \ static helper##Factory global_##helper##Factory;
Avoid naked pointer with memory allocation by returning a unique_ptr from CameraSensorHelperFactory::createInstance(), in order to increase memory allocation safety. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- src/ipa/libipa/camera_sensor_helper.cpp | 7 +++---- src/ipa/libipa/camera_sensor_helper.h | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-)