summaryrefslogtreecommitdiff
path: root/src/libcamera/v4l2_device.cpp
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund@ragnatech.se>2019-06-26 19:25:58 +0200
committerNiklas Söderlund <niklas.soderlund@ragnatech.se>2019-06-30 13:49:52 +0200
commit0116a940ba0232b625ab84bb90bb1bc3ddd47658 (patch)
treee82121bfbc83e1e07a6313e3f0f1232e27795567 /src/libcamera/v4l2_device.cpp
parent6948ec44c7f77fbd34283bfef7a661bd0d3c991d (diff)
libcamera: v4l2_device: Fix variable-sized object initialization
Compiling with clang renders errors as a variable-sized arrays are not allowed to be initialized. Solve this by using memset() for v4l2Ctrls which is the only one of the two arrays that needs to be zeroed. ../../src/libcamera/v4l2_device.cpp:155:37: error: variable-sized object may not be initialized const V4L2ControlInfo *controlInfo[count] = {}; ^~~~~ ../../src/libcamera/v4l2_device.cpp:156:36: error: variable-sized object may not be initialized struct v4l2_ext_control v4l2Ctrls[count] = {}; ^~~~~ ../../src/libcamera/v4l2_device.cpp:227:37: error: variable-sized object may not be initialized const V4L2ControlInfo *controlInfo[count] = {}; ^~~~~ ../../src/libcamera/v4l2_device.cpp:228:36: error: variable-sized object may not be initialized struct v4l2_ext_control v4l2Ctrls[count] = {}; ^~~~~ Fixes: eb068f4e67eedacd ("libcamera: v4l2_device: Implement get and set controls") Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src/libcamera/v4l2_device.cpp')
-rw-r--r--src/libcamera/v4l2_device.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
index f1821a7b..06939dea 100644
--- a/src/libcamera/v4l2_device.cpp
+++ b/src/libcamera/v4l2_device.cpp
@@ -152,8 +152,10 @@ int V4L2Device::getControls(V4L2ControlList *ctrls)
if (count == 0)
return 0;
- const V4L2ControlInfo *controlInfo[count] = {};
- struct v4l2_ext_control v4l2Ctrls[count] = {};
+ const V4L2ControlInfo *controlInfo[count];
+ struct v4l2_ext_control v4l2Ctrls[count];
+ memset(v4l2Ctrls, 0, sizeof(v4l2Ctrls));
+
for (unsigned int i = 0; i < count; ++i) {
const V4L2Control *ctrl = ctrls->getByIndex(i);
const V4L2ControlInfo *info = getControlInfo(ctrl->id());
@@ -224,8 +226,9 @@ int V4L2Device::setControls(V4L2ControlList *ctrls)
if (count == 0)
return 0;
- const V4L2ControlInfo *controlInfo[count] = {};
- struct v4l2_ext_control v4l2Ctrls[count] = {};
+ const V4L2ControlInfo *controlInfo[count];
+ struct v4l2_ext_control v4l2Ctrls[count];
+ memset(v4l2Ctrls, 0, sizeof(v4l2Ctrls));
for (unsigned int i = 0; i < count; ++i) {
const V4L2Control *ctrl = ctrls->getByIndex(i);