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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.