From cd4636c14fff91a3f729918d96d76e2dae095b91 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Wed, 9 Dec 2020 13:13:38 +0200 Subject: libcamera: pipeline: raspberrypi: Don't leak RPiCameraData::sensor_ The CameraSensor instance stored in RPiCameraData::sensor_ is allocated dynamically and never deleted. Fix the memory leak by storing it in a std::unique_ptr<>. Fixes: 740fd1b62f67 ("libcamera: pipeline: Raspberry Pi pipeline handler") Signed-off-by: Laurent Pinchart Reviewed-by: Naushir Patuck Reviewed-by: Paul Elder --- src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/libcamera/pipeline/raspberrypi/raspberrypi.cpp') diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp index 439c21ce..7a5f5881 100644 --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -134,7 +135,7 @@ class RPiCameraData : public CameraData { public: RPiCameraData(PipelineHandler *pipe) - : CameraData(pipe), sensor_(nullptr), state_(State::Stopped), + : CameraData(pipe), state_(State::Stopped), supportsFlips_(false), flipsAlterBayerOrder_(false), updateScalerCrop_(true), dropFrameCount_(0), ispOutputCount_(0) { @@ -158,7 +159,7 @@ public: void handleState(); void applyScalerCrop(const ControlList &controls); - CameraSensor *sensor_; + std::unique_ptr sensor_; /* Array of Unicam and ISP device streams and associated buffers/streams. */ RPi::Device unicam_; RPi::Device isp_; @@ -948,7 +949,7 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator) /* Identify the sensor. */ for (MediaEntity *entity : unicam_->entities()) { if (entity->function() == MEDIA_ENT_F_CAM_SENSOR) { - data->sensor_ = new CameraSensor(entity); + data->sensor_ = std::make_unique(entity); break; } } -- cgit v1.2.1