[PATCH] libcamera: fix maybe-uninitialized error
Stefan Klug
stefan.klug at ideasonboard.com
Thu Jun 27 15:31:00 CEST 2024
The gcc used in my current buildroot (Version 12.3) errors out with
-Wmaybe-uninitialized. Fix that.
Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
---
@Naush: Could you have a look at the rpi specific changes? Specifically
I'm not sure if the change in AwbConfig::read() is correct. It was
unclear to me if there are cases where line 125 should return 0 even
though a error got logged one line above.
Regards,
Stefan
src/ipa/libipa/exposure_mode_helper.cpp | 15 ++++++---------
src/ipa/rpi/controller/rpi/awb.cpp | 2 +-
src/libcamera/device_enumerator_sysfs.cpp | 2 +-
src/libcamera/pipeline/rpi/vc4/vc4.cpp | 2 +-
4 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/src/ipa/libipa/exposure_mode_helper.cpp b/src/ipa/libipa/exposure_mode_helper.cpp
index 683a564a01c8..9d1387636d05 100644
--- a/src/ipa/libipa/exposure_mode_helper.cpp
+++ b/src/ipa/libipa/exposure_mode_helper.cpp
@@ -166,7 +166,7 @@ ExposureModeHelper::splitExposure(utils::Duration exposure) const
return { minShutter_, minGain_, exposure / (minShutter_ * minGain_) };
utils::Duration shutter;
- double stageGain;
+ double stageGain = 1.0;
double gain;
for (unsigned int stage = 0; stage < gains_.size(); stage++) {
@@ -198,15 +198,12 @@ ExposureModeHelper::splitExposure(utils::Duration exposure) const
}
/*
- * From here on all we can do is max out the shutter time, followed by
- * the analogue gain. If we still haven't achieved the target we send
- * the rest of the exposure time to digital gain. If we were given no
- * stages to use then set stageGain to 1.0 so that shutter time is maxed
- * before gain touched at all.
+ * From here on all we can do is max out the shutter time, followed by the
+ * analogue gain. If we still haven't achieved the target we send the rest
+ * of the exposure time to digital gain. If we were given no stages to use
+ * then the default stageGain of 1.0 is used so that shutter time is maxed
+ * before gain is touched at all.
*/
- if (gains_.empty())
- stageGain = 1.0;
-
shutter = clampShutter(exposure / clampGain(stageGain));
gain = clampGain(exposure / shutter);
diff --git a/src/ipa/rpi/controller/rpi/awb.cpp b/src/ipa/rpi/controller/rpi/awb.cpp
index 003c8fa137f3..3503a5ab9218 100644
--- a/src/ipa/rpi/controller/rpi/awb.cpp
+++ b/src/ipa/rpi/controller/rpi/awb.cpp
@@ -91,7 +91,7 @@ static int readCtCurve(ipa::Pwl &ctR, ipa::Pwl &ctB, const libcamera::YamlObject
int AwbConfig::read(const libcamera::YamlObject ¶ms)
{
- int ret;
+ int ret = 0;
bayes = params["bayes"].get<int>(1);
framePeriod = params["frame_period"].get<uint16_t>(10);
diff --git a/src/libcamera/device_enumerator_sysfs.cpp b/src/libcamera/device_enumerator_sysfs.cpp
index fc33ba52b813..7866885c0f73 100644
--- a/src/libcamera/device_enumerator_sysfs.cpp
+++ b/src/libcamera/device_enumerator_sysfs.cpp
@@ -33,7 +33,7 @@ int DeviceEnumeratorSysfs::init()
int DeviceEnumeratorSysfs::enumerate()
{
struct dirent *ent;
- DIR *dir;
+ DIR *dir = nullptr;
static const char * const sysfs_dirs[] = {
"/sys/subsystem/media/devices",
diff --git a/src/libcamera/pipeline/rpi/vc4/vc4.cpp b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
index 4a89e35f5d7b..e5b6ef2b37cd 100644
--- a/src/libcamera/pipeline/rpi/vc4/vc4.cpp
+++ b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
@@ -802,7 +802,7 @@ void Vc4CameraData::ispInputDequeue(FrameBuffer *buffer)
void Vc4CameraData::ispOutputDequeue(FrameBuffer *buffer)
{
RPi::Stream *stream = nullptr;
- unsigned int index;
+ unsigned int index = 0;
if (!isRunning())
return;
--
2.43.0
More information about the libcamera-devel
mailing list