ipa: camera_sensor_helper: Return unique_ptr from createInstance

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>
Reviewed-by: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Laurent Pinchart 2022-10-03 22:55:11 +03:00
parent b4a3e6ade7
commit 9d9481188f
2 changed files with 6 additions and 7 deletions

View file

@ -261,8 +261,7 @@ std::unique_ptr<CameraSensorHelper> CameraSensorHelperFactory::create(const std:
if (name != factory->name_) if (name != factory->name_)
continue; continue;
CameraSensorHelper *helper = factory->createInstance(); return factory->createInstance();
return std::unique_ptr<CameraSensorHelper>(helper);
} }
return nullptr; return nullptr;
@ -307,8 +306,8 @@ std::vector<CameraSensorHelperFactory *> &CameraSensorHelperFactory::factories()
* macro. It creates a camera sensor helper instance associated with the camera * macro. It creates a camera sensor helper instance associated with the camera
* sensor model. * sensor model.
* *
* \return A pointer to a newly constructed instance of the CameraSensorHelper * \return A unique pointer to a newly constructed instance of the
* subclass corresponding to the factory * CameraSensorHelper subclass corresponding to the factory
*/ */
/** /**

View file

@ -73,7 +73,7 @@ private:
static void registerType(CameraSensorHelperFactory *factory); static void registerType(CameraSensorHelperFactory *factory);
virtual CameraSensorHelper *createInstance() const = 0; virtual std::unique_ptr<CameraSensorHelper> createInstance() const = 0;
std::string name_; std::string name_;
}; };
@ -85,9 +85,9 @@ public: \
helper##Factory() : CameraSensorHelperFactory(name) {} \ helper##Factory() : CameraSensorHelperFactory(name) {} \
\ \
private: \ private: \
CameraSensorHelper *createInstance() const \ std::unique_ptr<CameraSensorHelper> createInstance() const \
{ \ { \
return new helper(); \ return std::make_unique<helper>(); \
} \ } \
}; \ }; \
static helper##Factory global_##helper##Factory; static helper##Factory global_##helper##Factory;