This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH v2 12/12] posix: Remove VLA usage for internal fnmatch implementation
On 05/02/2018 13:08, Adhemerval Zanella wrote:
>
>
> On 05/02/2018 11:40, Andreas Schwab wrote:
>> On Feb 05 2018, Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote:
>>
>>> diff --git a/posix/fnmatch_loop.c b/posix/fnmatch_loop.c
>>> index eadb343..831e5ba 100644
>>> --- a/posix/fnmatch_loop.c
>>> +++ b/posix/fnmatch_loop.c
>>> @@ -493,26 +493,20 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
>>> {
>>> int32_t table_size;
>>> const int32_t *symb_table;
>>> -# if WIDE_CHAR_VERSION
>>> - char str[c1];
>>> - unsigned int strcnt;
>>> -# else
>>> -# define str (startp + 1)
>>> -# endif
>>> + struct char_array str;
>>> + char_array_init_empty (&str);
>>> const unsigned char *extra;
>>> int32_t idx;
>>> int32_t elem;
>>> int32_t second;
>>> int32_t hash;
>>>
>>> -# if WIDE_CHAR_VERSION
>>> /* We have to convert the name to a single-byte
>>> string. This is possible since the names
>>> consist of ASCII characters and the internal
>>> representation is UCS4. */
>>> - for (strcnt = 0; strcnt < c1; ++strcnt)
>>> - str[strcnt] = startp[1 + strcnt];
>>> -#endif
>>> + for (size_t strcnt = 0; strcnt < c1; ++strcnt)
>>> + char_array_append_char (&str, startp[1 + strcnt]);
>>>
>>> table_size =
>>> _NL_CURRENT_WORD (LC_COLLATE,
>>
>> That needs to be removed altogether, see
>> <http://sourceware.org/ml/libc-alpha/2017-04/msg00068.html>.
>
> Nice, I missed your patch. It seems to apply clean, I will review on the original
> thread.
Re-checking the bug reports related to the issues your patch aims to fix, I
noted on BZ#14185 comment #5 Jeff Law stated SuSE used to pack an out of tree
fix but non-longer do it. Do you know why exactly?