fprintf() crashes on wide-oriented stream.

Brian Inglis Brian.Inglis@Shaw.ca
Thu Sep 28 20:06:59 GMT 2023


On 2023-09-28 02:42, Takashi Yano wrote:
> On Thu, 28 Sep 2023 12:58:27 +0900
> Takashi Yano wrote:
>> On Tue, 26 Sep 2023 12:41:47 +0900
>> Takashi Yano wrote:
>>> With this patch, __sfputs_r/__sprint_r is split into two versions, one
>>> is for vfprintf which does not handle wide string, and the other (newly
>>> introduced __sfputws_r/__swprin_r) is for vfwprintf which handles wide
>>> string. Please note that fprintf gets working for wide orient stream
>>> just like BSD libc, which behaves differently from GNU libc.

Note that glibc handles %c/%s in wchar_t functions and %C/%lc/%S/%ls in char 
functions: see `man -m linux 3 fwide` NOTES.

>> I confirmed musl libc also behaves as BSD libc.
>>
>> In the GNU libc (glibc), fprintf() returns -1 with no errno set if the
>> stream is wide-oriented.

That is not documented in released man-pages-linux.
What is documented is that the width setting persists once set, and can not be 
changed until the stream is closed.

> I also confirmed that Solaris libc behaves as same as BSD libc.
> 
> I wonder what are the advantages of the glibc implementation?
> Any historical reason?

What are the behavioural differences you perceive?

There is a public inbox you can search at

	https://inbox.sourceware.org/libc-help/

and you can ask mailto:libc-help@sourceware.org about anything.

-- 
Take care. Thanks, Brian Inglis              Calgary, Alberta, Canada

La perfection est atteinte                   Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter  not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer     but when there is no more to cut
                                 -- Antoine de Saint-Exupéry


More information about the Newlib mailing list