summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-10-03 22:55:11 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-10-07 18:02:16 +0300
commit9d9481188fc3a4291b33a2d53e9e331cc2d7a023 (patch)
treec6ad56dddb93483183c91f22f92f6923a94318db
parentb4a3e6ade7864620e453ad81595407aac1979dee (diff)
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>
-rw-r--r--src/ipa/libipa/camera_sensor_helper.cpp7
-rw-r--r--src/ipa/libipa/camera_sensor_helper.h6
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 fde9bf5b..3a7d701d 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 410156ef..21ee43cc 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;