From c90e54f08182b04c06440a21cab808846c0fdc29 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 3 Jun 2023 01:25:53 +0200 Subject: [PATCH] intl: Improve declaration of 'struct binding'. * autogen.sh (GNULIB_MODULES_LIBINTL): Add flexmember. * gettext-runtime/intl/gettextP.h (struct binding): Use FLEXIBLE_ARRAY_MEMBER instead of ZERO. * gettext-runtime/intl/bindtextdom.c: Include flexmember.h. (offsetof): Remove fallback definition. (set_binding_values): Use FLEXNSIZEOF. --- autogen.sh | 1 + gettext-runtime/intl/bindtextdom.c | 11 +++++------ gettext-runtime/intl/gettextP.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/autogen.sh b/autogen.sh index e72f445c4..44f9ad59e 100755 --- a/autogen.sh +++ b/autogen.sh @@ -112,6 +112,7 @@ if ! $skip_gnulib; then attribute bison filename + flexmember havelib lib-symbol-visibility localcharset diff --git a/gettext-runtime/intl/bindtextdom.c b/gettext-runtime/intl/bindtextdom.c index 62bd41880..3c64cc193 100644 --- a/gettext-runtime/intl/bindtextdom.c +++ b/gettext-runtime/intl/bindtextdom.c @@ -1,5 +1,5 @@ /* Implementation of the bindtextdomain(3) function - Copyright (C) 1995-2021 Free Software Foundation, Inc. + Copyright (C) 1995-2023 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -39,10 +39,7 @@ # include "glthread/lock.h" #endif -/* Some compilers, like SunOS4 cc, don't have offsetof in . */ -#ifndef offsetof -# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) -#endif +#include "flexmember.h" /* @@ end of prolog @@ */ @@ -237,7 +234,9 @@ set_binding_values (const char *domainname, /* We have to create a new binding. */ size_t len = strlen (domainname) + 1; struct binding *new_binding = - (struct binding *) malloc (offsetof (struct binding, domainname) + len); + (struct binding *) + malloc (FLEXNSIZEOF (struct binding, domainname, len)); + if (__builtin_expect (new_binding == NULL, 0)) goto failed; diff --git a/gettext-runtime/intl/gettextP.h b/gettext-runtime/intl/gettextP.h index 9219b3cfe..de34a968c 100644 --- a/gettext-runtime/intl/gettextP.h +++ b/gettext-runtime/intl/gettextP.h @@ -211,7 +211,7 @@ struct binding wchar_t *wdirname; #endif char *codeset; - char domainname[ZERO]; + char domainname[FLEXIBLE_ARRAY_MEMBER]; }; /* A counter which is incremented each time some previous translations -- 2.47.2