* 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>
* 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._stdout = _GLOBAL_REENT->_stdout;
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.__sglue._niobs = 3;
local_clib.__sglue._iobs = &_GLOBAL_REENT->__sf[0];

View File

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