From: Paul Eggert Date: Sat, 26 Jul 2025 07:47:48 +0000 (-0700) Subject: Use flexible array member in struct dumpdir X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=076818f8d9735ccb53e3ed7f9c43d9198332e70b;p=thirdparty%2Ftar.git Use flexible array member in struct dumpdir * src/incremen.c: Include flexmember.h. (struct dumpdir): contents is now a flexible member, not a pointer. This is more idiomatic and slightly more efficient. (dumpdir_create0): Adjust to the new struct dumpdir layout. --- diff --git a/src/incremen.c b/src/incremen.c index 0e418893..020fa1f0 100644 --- a/src/incremen.c +++ b/src/incremen.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include "common.h" @@ -61,10 +62,10 @@ enum struct dumpdir /* Dump directory listing */ { - char *contents; /* Actual contents */ idx_t total; /* Total number of elements */ idx_t elc; /* Number of D/N/Y elements. */ char **elv; /* Array of D/N/Y elements */ + char contents[FLEXIBLE_ARRAY_MEMBER]; /* Actual contents */ }; /* Directory attributes. */ @@ -141,8 +142,7 @@ dumpdir_create0 (const char *contents, const char *cmask) if (!cmask || strchr (cmask, *q)) i++; } - dump = xmalloc (sizeof (*dump) + ctsize); - dump->contents = (char *) (dump + 1); + dump = xmalloc (FLEXNSIZEOF (struct dumpdir, contents, ctsize)); memcpy (dump->contents, contents, ctsize); dump->total = total; dump->elc = i;