Subject: Re: bug#9077: coreutils-8.12: fiemap.h uses "struct fiemap_extent fm_extents[0]; "

From: Paul Eggert <[email-masked]>
Date: Thu, 14 Jul 2011 15:50:07 -0700

On 07/14/11 04:45, Pádraig Brady wrote:
> The non standard "zero length array" syntax was copied from
> the linux kernel headers. Changing this to a C99 flexible array
> as you suggest, should be fine according to the constraints listed here:

Won't this break non-GCC compilers that don't support
C99 flexible arrays?

Instead, how about this patch?  If I understand things correctly,
it should fix the problem on NonStop, and should also work with
pre-C99 non-GCC compilers.

diff --git a/src/fiemap.h b/src/fiemap.h
index 1938c74..e7243b4 100644
--- a/src/fiemap.h
+++ b/src/fiemap.h
@@ -51,8 +51,9 @@ struct fiemap
 
   uint32_t fm_reserved;
 
-  /* Array of mapped extents(out).  */
-  struct fiemap_extent fm_extents[0];
+  /* Array of mapped extents(out).
+     The actual size is given by fm_extent_count.  */
+  struct fiemap_extent fm_extents[1];
 };
 
 /* The maximum offset can be mapped for a file.  */