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 + + * autoload.cc (wsock_init): Keep lock while modifying return address. + 2004-06-17 Corinna Vinschen * 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;