4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-28 03:27:46 +08:00

* cygtls.cc (_cygtls::init_thread): Set __sdidinit to negative value to

indicate that it is "special".
* thread.cc (pthread::exit): If __sdidinit is < 0, it was never really
initialized so reset it to 0 before calling _reclaim_reent.
This commit is contained in:
Christopher Faylor 2004-09-07 04:05:14 +00:00
parent ab21f18c95
commit 6f7a746cee
3 changed files with 10 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2004-09-07 Christopher Faylor <cgf@timesys.com>
* cygtls.cc (_cygtls::init_thread): Set __sdidinit to negative value to
indicate that it is "special".
* thread.cc (pthread::exit): If __sdidinit is < 0, it was never really
initialized so reset it to 0 before calling _reclaim_reent.
2004-09-05 Christopher Faylor <cgf@timesys.com> 2004-09-05 Christopher Faylor <cgf@timesys.com>
* include/cygwin/version.h: Bump DLL minor number to 12. * include/cygwin/version.h: Bump DLL minor number to 12.

View File

@ -107,7 +107,7 @@ _cygtls::init_thread (void *x, DWORD (*func) (void *, void *))
local_clib._stdin = _GLOBAL_REENT->_stdin; local_clib._stdin = _GLOBAL_REENT->_stdin;
local_clib._stdout = _GLOBAL_REENT->_stdout; local_clib._stdout = _GLOBAL_REENT->_stdout;
local_clib._stderr = _GLOBAL_REENT->_stderr; local_clib._stderr = _GLOBAL_REENT->_stderr;
local_clib.__sdidinit = _GLOBAL_REENT->__sdidinit; local_clib.__sdidinit = _GLOBAL_REENT->__sdidinit ? -1 : 0;
local_clib.__cleanup = _GLOBAL_REENT->__cleanup; local_clib.__cleanup = _GLOBAL_REENT->__cleanup;
local_clib.__sglue._niobs = 3; local_clib.__sglue._niobs = 3;
local_clib.__sglue._iobs = &_GLOBAL_REENT->__sf[0]; local_clib.__sglue._iobs = &_GLOBAL_REENT->__sf[0];

View File

@ -355,6 +355,8 @@ pthread::exit (void *value_ptr)
mutex.unlock (); mutex.unlock ();
} }
if (_my_tls.local_clib.__sdidinit < 0)
_my_tls.local_clib.__sdidinit = 0;
(_reclaim_reent) (_REENT); (_reclaim_reent) (_REENT);