fprintf() crashes on wide-oriented stream.
Torbjorn SVENSSON
torbjorn.svensson@foss.st.com
Thu Oct 5 18:20:01 GMT 2023
On 2023-10-05 17:18, Takashi Yano wrote:
> On Thu, 5 Oct 2023 19:18:14 +0900
> Takashi Yano wrote:
>> Hi Jeff,
>>
>> Thanks for reviewing and the comment.
>>
>> On Wed, 4 Oct 2023 16:16:13 -0400
>> Jeff Johnston wrote:
>>> I finally took a look at this. The issue is whether POSIX compliance is
>>> desired.
>>
>> IIUC, POSIX states that width setting is once decided, it cannot be
>> changed until the stream is closed. However, nothing is stated what
>> should happen when different width data is output into the stream.
>>
>>> Corinna would have
>>> strong opinions that it is desired and thus, I think she should have her
>>> say when she gets back. I personally believe that
>>> newlib should have behaved like glibc. I also think the test snippet is
>>> invalid and should have performed an fwide call on stdout
>>> to reset the wide-orientation and have the code work properly in all cases.
>>
>> Currently, fputs and fputc works even for wide-oriended stream, so to
>> be consistent with that, fprintf also might be better to work.
>>
>> I wouldn't necessarily expect fprintf to work on wide-oriented streams,
>> but buffer overruns should not happen anyway.
>>
>> So, newlib should be fixed either way.
>
> As a test, I made a patch attached to make it behave like glibc.
> What do you think?
Can you please define symbols for those 1 and -1 so that the code would
be easier to understand when reading it?
More information about the Newlib
mailing list