[RFC][PATCH v9 1/6] Correct the size of _nl_value_type_LC_... arrays.
Zack Weinberg
zackw@panix.com
Fri Oct 27 15:01:00 GMT 2017
On Tue, Sep 19, 2017 at 6:41 AM, Rafal Luzynski
<digitalfreak@lingonborough.com> wrote:
> There were several problems with checking the array size in the past,
> for example BZ#356, caused by incorrectly assuming that every locale
> token represents one element. In fact, if a token represented
> a subarray, for example an array of month names or characters category
> and it appeared at the end of the array the compiler assumed that
> the array ends just after the first element of the subarray.
> Workarounds used in the past was to skip some categories while testing,
> for example LC_CTYPE. Now when we are about to add alternative month
> names to LC_TIME (BZ#10871) this will fail again.
>
...
> #define DEFINE_CATEGORY(category, category_name, items, a) \
> -static const enum value_type _nl_value_type_##category[] = { NO_PAREN items };
> +static const enum value_type _nl_value_type_##category \
> + [_NL_ITEM_INDEX (_NL_NUM_##category)] = { NO_PAREN items };
> #define DEFINE_ELEMENT(element, element_name, optstd, type, rest...) \
> [_NL_ITEM_INDEX (element)] = type,
> #include "categories.def"
Please add a short version of your commit-message explanation of the
change as a comment right above "#define DEFINE_CATEGORY". Something
like
/* The size of the array must be specified explicitly because some of
the 'items' may be
subarrays, which will cause the compiler to deduce an incorrect
size from the initializer. */
OK with that change; as this is independent of the rest of the
patches, please go ahead and push it immediately, without the rest of
them.
zw
More information about the Libc-alpha
mailing list