fbs: use std::array and .at()
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Mon, 18 Nov 2019 10:07:36 +0000 (12:07 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Mon, 18 Nov 2019 10:12:39 +0000 (12:12 +0200)
Use std::array and .at() to get bounds checking.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kms++/inc/kms++/dmabufframebuffer.h
kms++/inc/kms++/dumbframebuffer.h
kms++/inc/kms++/extframebuffer.h
kms++/src/dmabufframebuffer.cpp
kms++/src/dumbframebuffer.cpp
kms++/src/extframebuffer.cpp

index 73c6d21..2a9182d 100644 (file)
@@ -20,10 +20,10 @@ public:
        PixelFormat format() const override { return m_format; }
        unsigned num_planes() const override { return m_num_planes; }
 
-       uint32_t handle(unsigned plane) const { return m_planes[plane].handle; }
-       uint32_t stride(unsigned plane) const override { return m_planes[plane].stride; }
-       uint32_t size(unsigned plane) const override { return m_planes[plane].size; }
-       uint32_t offset(unsigned plane) const override { return m_planes[plane].offset; }
+       uint32_t handle(unsigned plane) const { return m_planes.at(plane).handle; }
+       uint32_t stride(unsigned plane) const override { return m_planes.at(plane).stride; }
+       uint32_t size(unsigned plane) const override { return m_planes.at(plane).size; }
+       uint32_t offset(unsigned plane) const override { return m_planes.at(plane).offset; }
        uint8_t* map(unsigned plane) override;
        int prime_fd(unsigned plane) override;
 
@@ -41,7 +41,7 @@ private:
        };
 
        unsigned m_num_planes;
-       struct FramebufferPlane m_planes[4];
+       std::array<FramebufferPlane, 4> m_planes;
 
        PixelFormat m_format;
 
index b722615..f450b2c 100644 (file)
@@ -19,10 +19,10 @@ public:
        PixelFormat format() const override { return m_format; }
        unsigned num_planes() const override { return m_num_planes; }
 
-       uint32_t handle(unsigned plane) const { return m_planes[plane].handle; }
-       uint32_t stride(unsigned plane) const override { return m_planes[plane].stride; }
-       uint32_t size(unsigned plane) const override { return m_planes[plane].size; }
-       uint32_t offset(unsigned plane) const override { return m_planes[plane].offset; }
+       uint32_t handle(unsigned plane) const { return m_planes.at(plane).handle; }
+       uint32_t stride(unsigned plane) const override { return m_planes.at(plane).stride; }
+       uint32_t size(unsigned plane) const override { return m_planes.at(plane).size; }
+       uint32_t offset(unsigned plane) const override { return m_planes.at(plane).offset; }
        uint8_t* map(unsigned plane) override;
        int prime_fd(unsigned plane) override;
 
@@ -37,7 +37,7 @@ private:
        };
 
        unsigned m_num_planes;
-       struct FramebufferPlane m_planes[4];
+       std::array<FramebufferPlane, 4> m_planes;
 
        PixelFormat m_format;
 };
index 0b9d08a..5239a3d 100644 (file)
@@ -20,10 +20,10 @@ public:
        PixelFormat format() const override { return m_format; }
        unsigned num_planes() const override { return m_num_planes; }
 
-       uint32_t handle(unsigned plane) const { return m_planes[plane].handle; }
-       uint32_t stride(unsigned plane) const override { return m_planes[plane].stride; }
-       uint32_t size(unsigned plane) const override { return m_planes[plane].size; }
-       uint32_t offset(unsigned plane) const override { return m_planes[plane].offset; }
+       uint32_t handle(unsigned plane) const { return m_planes.at(plane).handle; }
+       uint32_t stride(unsigned plane) const override { return m_planes.at(plane).stride; }
+       uint32_t size(unsigned plane) const override { return m_planes.at(plane).size; }
+       uint32_t offset(unsigned plane) const override { return m_planes.at(plane).offset; }
 
 private:
        struct FramebufferPlane {
@@ -35,7 +35,7 @@ private:
        };
 
        unsigned m_num_planes;
-       struct FramebufferPlane m_planes[4];
+       std::array<FramebufferPlane, 4> m_planes;
 
        PixelFormat m_format;
 };
index feac116..d36eb89 100644 (file)
@@ -32,7 +32,7 @@ DmabufFramebuffer::DmabufFramebuffer(Card& card, uint32_t width, uint32_t height
                throw std::invalid_argument("the size of fds, pitches and offsets has to match number of planes");
 
        for (int i = 0; i < format_info.num_planes; ++i) {
-               FramebufferPlane& plane = m_planes[i];
+               FramebufferPlane& plane = m_planes.at(i);
 
                plane.prime_fd = fds[i];
 
@@ -65,7 +65,7 @@ DmabufFramebuffer::~DmabufFramebuffer()
 
 uint8_t* DmabufFramebuffer::map(unsigned plane)
 {
-       FramebufferPlane& p = m_planes[plane];
+       FramebufferPlane& p = m_planes.at(plane);
 
        if (p.map)
                return p.map;
@@ -80,7 +80,7 @@ uint8_t* DmabufFramebuffer::map(unsigned plane)
 
 int DmabufFramebuffer::prime_fd(unsigned plane)
 {
-       FramebufferPlane& p = m_planes[plane];
+       FramebufferPlane& p = m_planes.at(plane);
 
        return p.prime_fd;
 }
index 2b74c35..3448fb1 100644 (file)
@@ -36,7 +36,7 @@ DumbFramebuffer::DumbFramebuffer(Card& card, uint32_t width, uint32_t height, Pi
 
        for (int i = 0; i < format_info.num_planes; ++i) {
                const PixelFormatPlaneInfo& pi = format_info.planes[i];
-               FramebufferPlane& plane = m_planes[i];
+               FramebufferPlane& plane = m_planes.at(i);
 
                /* create dumb buffer */
                struct drm_mode_create_dumb creq = drm_mode_create_dumb();
@@ -74,7 +74,7 @@ DumbFramebuffer::~DumbFramebuffer()
        drmModeRmFB(card().fd(), id());
 
        for (uint i = 0; i < m_num_planes; ++i) {
-               FramebufferPlane& plane = m_planes[i];
+               FramebufferPlane& plane = m_planes.at(i);
 
                /* unmap buffer */
                if (plane.map)
@@ -91,7 +91,7 @@ DumbFramebuffer::~DumbFramebuffer()
 
 uint8_t* DumbFramebuffer::map(unsigned plane)
 {
-       FramebufferPlane& p = m_planes[plane];
+       FramebufferPlane& p = m_planes.at(plane);
 
        if (p.map)
                return p.map;
@@ -114,15 +114,15 @@ uint8_t* DumbFramebuffer::map(unsigned plane)
 
 int DumbFramebuffer::prime_fd(unsigned int plane)
 {
-       if (m_planes[plane].prime_fd >= 0)
-               return m_planes[plane].prime_fd;
+       if (m_planes.at(plane).prime_fd >= 0)
+               return m_planes.at(plane).prime_fd;
 
-       int r = drmPrimeHandleToFD(card().fd(), m_planes[plane].handle,
-                                  DRM_CLOEXEC | O_RDWR, &m_planes[plane].prime_fd);
+       int r = drmPrimeHandleToFD(card().fd(), m_planes.at(plane).handle,
+                                  DRM_CLOEXEC | O_RDWR, &m_planes.at(plane).prime_fd);
        if (r)
                throw std::runtime_error("drmPrimeHandleToFD failed");
 
-       return m_planes[plane].prime_fd;
+       return m_planes.at(plane).prime_fd;
 }
 
 }
index 9f7ab6c..23aed50 100644 (file)
@@ -28,10 +28,9 @@ ExtFramebuffer::ExtFramebuffer(Card& card, uint32_t width, uint32_t height, Pixe
                throw std::invalid_argument("the size of handles, pitches and offsets has to match number of planes");
 
        for (int i = 0; i < format_info.num_planes; ++i) {
-               FramebufferPlane& plane = m_planes[i];
+               FramebufferPlane& plane = m_planes.at(i);
 
                plane.handle = handles[i];
-
                plane.stride = pitches[i];
                plane.offset = offsets[i];
                plane.size = plane.stride * height;