[cairo] 0-length array in c986a7310bb06582b7d8a566d5f007ba4e5e75bf

Albert Chin cairo at mlists.thewrittenword.com
Tue Sep 3 14:34:58 PDT 2013

Commit c986a7310bb06582b7d8a566d5f007ba4e5e75bf introduced the
following code to src/cairo-image-compositor.c:
--- a/src/cairo-image-compositor.c
+++ b/src/cairo-image-compositor.c
@@ -1547,7 +1547,8 @@ typedef struct _cairo_image_span_renderer {
            uint8_t *data;
        } mask;
     } u;
-    uint8_t buf[sizeof(cairo_abstract_span_renderer_t)-128];
+    uint8_t _buf[0];
+#define SZ_BUF (sizeof (cairo_abstract_span_renderer_t) - sizeof (cairo_image_span_renderer_t))
 } cairo_image_span_renderer_t;
 COMPILE_TIME_ASSERT (sizeof (cairo_image_span_renderer_t) <= sizeof (cairo_abstract_span_renderer_t));

The Solaris 8 compiler and the HP-UX/IA compilers don't like the
above. The Solaris 8 compiler errors with:
  "cairo-image-compositor.c", line 1551: zero or negative subscript
and the HP-UX/IA compilers error with:
  "cairo-image-compositor.c", line 1551: error #2094: the size of an array must
            be greater than zero
        uint8_t _buf[0];

albert chin (china at thewrittenword.com)

More information about the cairo mailing list