summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/thread.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/thread.cc')
-rw-r--r--winsup/cygwin/thread.cc14
1 files changed, 12 insertions, 2 deletions
diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc
index 2304b7b42..6931b3914 100644
--- a/winsup/cygwin/thread.cc
+++ b/winsup/cygwin/thread.cc
@@ -1769,6 +1769,16 @@ verifyable_object_isvalid (void const * objectptr, long magic)
return verifyable_object_isvalid (objectptr, magic, NULL);
}
+inline void
+__reent_t::init_clib (struct _reent& var)
+{
+ var = ((struct _reent) _REENT_INIT (var));
+ var._stdin = _GLOBAL_REENT->_stdin;
+ var._stdout = _GLOBAL_REENT->_stdout;
+ var._stderr = _GLOBAL_REENT->_stderr;
+ _clib = &var;
+};
+
/* Pthreads */
void *
pthread::thread_init_wrapper (void *_arg)
@@ -1778,7 +1788,7 @@ pthread::thread_init_wrapper (void *_arg)
pthread *thread = (pthread *) _arg;
struct __reent_t local_reent;
struct _winsup_t local_winsup;
- struct _reent local_clib = _REENT_INIT (local_clib);
+ struct _reent local_clib;
struct sigaction _sigs[NSIG];
sigset_t _sig_mask; /* one set for everything to ignore. */
@@ -1791,7 +1801,7 @@ pthread::thread_init_wrapper (void *_arg)
memset (&local_winsup, 0, sizeof (struct _winsup_t));
- local_reent._clib = &local_clib;
+ local_reent.init_clib (local_clib);
local_reent._winsup = &local_winsup;
local_winsup._process_logmask = LOG_UPTO (LOG_DEBUG);