[PATCH 1/9] score: Add and use RTEMS_ZERO_LENGTH_ARRAY

Sebastian Huber sebastian.huber at embedded-brains.de
Mon Apr 14 13:11:26 UTC 2014


---
 cpukit/libblock/include/rtems/blkdev.h         |    2 +-
 cpukit/libblock/include/rtems/ide_part_table.h |    2 +-
 cpukit/score/include/rtems/score/basedefs.h    |    7 +++++++
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/cpukit/libblock/include/rtems/blkdev.h b/cpukit/libblock/include/rtems/blkdev.h
index f934871..d17cadc 100644
--- a/cpukit/libblock/include/rtems/blkdev.h
+++ b/cpukit/libblock/include/rtems/blkdev.h
@@ -142,7 +142,7 @@ typedef struct rtems_blkdev_request {
   /**
    * List of scatter or gather buffers.
    */
-  rtems_blkdev_sg_buffer bufs[0];
+  rtems_blkdev_sg_buffer bufs[RTEMS_ZERO_LENGTH_ARRAY];
 } rtems_blkdev_request;
 
 /**
diff --git a/cpukit/libblock/include/rtems/ide_part_table.h b/cpukit/libblock/include/rtems/ide_part_table.h
index 3b4b8a5..261135c 100644
--- a/cpukit/libblock/include/rtems/ide_part_table.h
+++ b/cpukit/libblock/include/rtems/ide_part_table.h
@@ -78,7 +78,7 @@
 typedef struct rtems_sector_data_s
 {
     uint32_t   sector_num; /* sector number on the device */
-    uint8_t    data[0]; /* raw sector data */
+    uint8_t    data[RTEMS_ZERO_LENGTH_ARRAY]; /* raw sector data */
 } rtems_sector_data_t;
 
 
diff --git a/cpukit/score/include/rtems/score/basedefs.h b/cpukit/score/include/rtems/score/basedefs.h
index 2fc7caa..8f479fe 100644
--- a/cpukit/score/include/rtems/score/basedefs.h
+++ b/cpukit/score/include/rtems/score/basedefs.h
@@ -219,6 +219,13 @@
 
 #define RTEMS_ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0]))
 
+/*
+ * Zero-length arrays are valid in C99 as flexible array members.  C++11
+ * doesn't allow flexible array members.  Use the GNU extension which is also
+ * supported by other compilers.
+ */
+#define RTEMS_ZERO_LENGTH_ARRAY 0
+
 #ifndef ASM
   #ifdef RTEMS_DEPRECATED_TYPES
     typedef bool boolean;
-- 
1.7.7




More information about the devel mailing list