From patchwork Sat Dec 12 18:51:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 10656 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id C6667BD80A for ; Sat, 12 Dec 2020 18:51:29 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 2D6C860380; Sat, 12 Dec 2020 19:51:29 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="AtVdjFo5"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4D11A60337 for ; Sat, 12 Dec 2020 19:51:27 +0100 (CET) Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id A29832C2; Sat, 12 Dec 2020 19:51:26 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1607799086; bh=t+NbMzSiRDJKmzrb/v/FRmQiLaADl4AiYjkdDM9tMTM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AtVdjFo5gCUVuLxzhtTQUgefouM3OrPYXul8GSAUg9GSTyqCdrFldUmFURvbpIQYL 2Hc8h3wlNwR9qvcSEDIFTDr7qPHIjsUBjKsX4Nud52AaEFdo4Urn66+foofPp+AQ3U 7PqtKeWFxTigsbLdqY1lAcquNQ3YmFGQh+XrEY+A= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Sat, 12 Dec 2020 20:51:14 +0200 Message-Id: <20201212185116.29611-2-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201212185116.29611-1-laurent.pinchart@ideasonboard.com> References: <20201212185116.29611-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 1/3] libcamera: pipeline: raspberrypi: Don't leak RPiCameraData::sensor_ X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" 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(-) diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp index 439c21ce4566..7a5f5881b9b3 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; } }