aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2004-02-17 21:17:25 +0000
committerCorinna Vinschen <corinna@vinschen.de>2004-02-17 21:17:25 +0000
commita682de34be3a3e6f1270a4b0e1e5288e09140abf (patch)
treea6122e3d225f8cf09e5465abed4d5e8957eaf762
parent720c33ae4c9fb2fe10268e123d5b34a5042170e1 (diff)
downloadnewlib-a682de34be3a3e6f1270a4b0e1e5288e09140abf.zip
newlib-a682de34be3a3e6f1270a4b0e1e5288e09140abf.tar.gz
newlib-a682de34be3a3e6f1270a4b0e1e5288e09140abf.tar.bz2
* fork.cc (fork_child): Move fixup_shms_after_fork so that
signal_arrived is initialized when calling it.
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/fork.cc8
2 files changed, 9 insertions, 4 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 90d2cb5..b048677 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2004-02-17 Corinna Vinschen <corinna@vinschen.de>
+
+ * fork.cc (fork_child): Move fixup_shms_after_fork so that
+ signal_arrived is initialized when calling it.
+
2004-02-17 Christopher Faylor <cgf@redhat.com>
* Makefile.in (clean): Clean libserver, too.
diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc
index 5b5f66d..b8cd3ed 100644
--- a/winsup/cygwin/fork.cc
+++ b/winsup/cygwin/fork.cc
@@ -300,15 +300,15 @@ fork_child (HANDLE& hParent, dll *&first_dll, bool& load_dlls)
(void) ForceCloseHandle1 (fork_info->subproc_ready, subproc_ready);
(void) ForceCloseHandle1 (fork_info->forker_finished, forker_finished);
+ pinfo_fixup_after_fork ();
+ _my_tls.fixup_after_fork ();
+ sigproc_init ();
+
#ifdef USE_SERVER
if (fixup_shms_after_fork ())
api_fatal ("recreate_shm areas after fork failed");
#endif
- pinfo_fixup_after_fork ();
- _my_tls.fixup_after_fork ();
- sigproc_init ();
-
/* Set thread local stuff to zero. Under Windows 95/98 this is sometimes
non-zero, for some reason.
FIXME: There is a memory leak here after a fork. */