Re: [PATCH v3 3/5] Introduce _REENT_GLOBAL_STDIO_STREAMS
Freddie Chopin <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
On Fri, 2017-06-30 at 10:58 +0200, Sebastian Huber wrote: > > ----- Am 30. Jun 2017 um 10:13 schrieb Corinna Vinschen > [email protected]: > > > On Jun 30 07:43, Sebastian Huber wrote: > > > On 29/06/17 20:31, Corinna Vinschen wrote: > > > > > > > And, JFYI, Cygwin will start to use it too after the next > > > > release:) > > > > > > There are some new problems with this change. We have no > > > reference counting > > > in the FILE objects, so a freopen(..., stdin), closes the global > > > stdin FILE > > > object (__sf[0]), etc. What works is a stdin = fopen(). I guess > > > this could > > > break existing applications. > > > > Erm... isn't that expected behaviour? stdin/stdout/stderr are > > global > > objects, after all. They were never thread-local per POSIX. > > The stdin/stdout/stderr pointers are still thread-local with this > option. Only the FILE objects itself are now global. If you do a > stdin = fopen() you get a completely thread-local stdin. I have > absolutely no idea why this stuff is thread-local in Newlib by > default. Would that be possible, to make stdin/stdout/stderr completely global (remove them from _reent, use global objects) when _REENT_GLOBAL_STDIO_STREAMS is enabled? Regards, FCh