From 34b9d317003b184891bb68bc53a71fdd55357ed8 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Fri, 15 Aug 2025 13:09:28 +0300 Subject: [PATCH] pipeline: rkisp1: Replace error handling gotos with utils::exit_scope MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use utils::exit_scope in PipelineHandlerRkISP1::allocateBuffers() to avoid gotos for error handling. Signed-off-by: Laurent Pinchart Reviewed-by: Barnabás Pőcze Reviewed-by: Jacopo Mondi --- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp index 81370f4c..55d7d444 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp @@ -1002,21 +1002,27 @@ int PipelineHandlerRkISP1::allocateBuffers(Camera *camera) unsigned int ipaBufferId = 1; int ret; + auto errorCleanup = utils::scope_exit{ [&]() { + paramBuffers_.clear(); + statBuffers_.clear(); + mainPathBuffers_.clear(); + } }; + if (!isRaw_) { ret = param_->allocateBuffers(kRkISP1MinBufferCount, ¶mBuffers_); if (ret < 0) - goto error; + return ret; ret = stat_->allocateBuffers(kRkISP1MinBufferCount, &statBuffers_); if (ret < 0) - goto error; + return ret; } /* If the dewarper is being used, allocate internal buffers for ISP. */ if (useDewarper_) { ret = mainPath_.exportBuffers(kRkISP1MinBufferCount, &mainPathBuffers_); if (ret < 0) - goto error; + return ret; for (std::unique_ptr &buffer : mainPathBuffers_) availableMainPathBuffers_.push(buffer.get()); @@ -1038,14 +1044,8 @@ int PipelineHandlerRkISP1::allocateBuffers(Camera *camera) data->ipa_->mapBuffers(data->ipaBuffers_); + errorCleanup.release(); return 0; - -error: - paramBuffers_.clear(); - statBuffers_.clear(); - mainPathBuffers_.clear(); - - return ret; } int PipelineHandlerRkISP1::freeBuffers(Camera *camera)