On 08/16/2018 05:01 PM, Joseph Myers wrote: > On Thu, 16 Aug 2018, Jeff Law wrote: > >> restores previous behavior. The sprintf bits want to count element >> sized chunks, which for wchars is 4 bytes (that count will then be > >> /* Compute the range the argument's length can be in. */ >> - fmtresult slen = get_string_length (arg); >> + int count_by = dir.specifier == 'S' || dir.modifier == FMT_LEN_l ? 4 : 1; > > I don't see how a hardcoded 4 is correct here. Surely you need to example > wchar_type_node to determine its actual size for this target. We did kick this around a little. IIRC Martin didn't think that it was worth handling the 2 byte wchar case.
In theory something like WCHAR_TYPE_SIZE / BITS_PER_UNIT probably does the trick. I'm a bit leery of using that though. We don't use it anywhere else within GCC AFAICT. JEff