summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog4
-rw-r--r--winsup/cygwin/autoload.cc4
2 files changed, 6 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index d0a9167e7..0a9d16d10 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+2004-06-21 Christopher Faylor <cgf@alum.bu.edu>
+
+ * autoload.cc (wsock_init): Keep lock while modifying return address.
+
2004-06-17 Corinna Vinschen <corinna@vinschen.de>
* fhandler.cc (fhandler_base::open): Remove 9x specific code.
diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc
index f2d46d1b3..6062f7e21 100644
--- a/winsup/cygwin/autoload.cc
+++ b/winsup/cygwin/autoload.cc
@@ -278,13 +278,13 @@ wsock_init ()
}
}
- InterlockedDecrement (&here);
-
/* Kludge alert. Redirects the return address to dll_chain. */
__asm__ __volatile__ (" \n\
movl $dll_chain,4(%ebp) \n\
");
+ InterlockedDecrement (&here);
+
volatile retchain ret;
/* Set "arguments for dll_chain. */
ret.low = (long) dll_func_load;