mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-30 02:50:25 +08:00
* select.cc (start_thread_socket): Delay setting thread local exitsock until we
know it's correct. Return correct value on error.
This commit is contained in:
parent
9905786a04
commit
12a7d844b9
@ -1,3 +1,8 @@
|
||||
2006-05-23 Christopher Faylor <cgf@timesys.com>
|
||||
|
||||
* select.cc (start_thread_socket): Delay setting thread local exitsock
|
||||
until we know it's correct. Return correct value on error.
|
||||
|
||||
2006-05-23 Lev Bishop <lev.bishop+cygwin@gmail.com>
|
||||
Christopher Faylor <cgf@timesys.com>
|
||||
|
||||
|
6349
winsup/cygwin/configure
vendored
6349
winsup/cygwin/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -9,63 +9,12 @@ dnl details.
|
||||
dnl
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.12)dnl
|
||||
AC_PREREQ(2.59)dnl
|
||||
AC_INIT(init.cc)
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
INSTALL="/bin/sh "`cd $srcdir/../..; echo $(pwd)/install-sh -c`
|
||||
AC_CONFIG_AUX_DIR(../..)
|
||||
|
||||
AC_PROG_INSTALL
|
||||
|
||||
dnl FIXME: We temporarily define our own version of AC_PROG_CC. This is
|
||||
dnl copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
|
||||
dnl are probably using a cross compiler, which will not be able to fully
|
||||
dnl link an executable. This should really be fixed in autoconf
|
||||
dnl itself.
|
||||
|
||||
AC_DEFUN(LIB_AC_PROG_CC,
|
||||
[AC_BEFORE([$0], [AC_PROG_CPP])dnl
|
||||
AC_CHECK_TOOL(CC, gcc, gcc)
|
||||
if test -z "$CC"; then
|
||||
AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
|
||||
test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
|
||||
fi
|
||||
|
||||
AC_PROG_CC_GNU
|
||||
|
||||
if test $ac_cv_prog_gcc = yes; then
|
||||
GCC=yes
|
||||
dnl Check whether -g works, even if CFLAGS is set, in case the package
|
||||
dnl plays around with CFLAGS (such as to build both debugging and
|
||||
dnl normal versions of a library), tasteless as that idea is.
|
||||
ac_test_CFLAGS="${CFLAGS+set}"
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS=
|
||||
AC_PROG_CC_G
|
||||
if test "$ac_test_CFLAGS" = set; then
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
elif test $ac_cv_prog_cc_g = yes; then
|
||||
CFLAGS="-gstabs+ -O2"
|
||||
else
|
||||
CFLAGS="-O2"
|
||||
fi
|
||||
else
|
||||
GCC=
|
||||
test "${CFLAGS+set}" = set || CFLAGS="-g"
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN(LIB_AC_PROG_CXX,
|
||||
[AC_BEFORE([$0], [AC_PROG_CPP])dnl
|
||||
AC_CHECK_TOOL(CXX, g++, g++)
|
||||
if test -z "$CXX"; then
|
||||
AC_CHECK_PROG(CXX, c++, c++, , , )
|
||||
test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
|
||||
fi
|
||||
|
||||
CXXFLAGS='$(CFLAGS)'
|
||||
])
|
||||
|
||||
AC_CANONICAL_SYSTEM
|
||||
|
||||
LIB_AC_PROG_CC
|
||||
|
@ -1405,12 +1405,12 @@ start_thread_socket (select_record *me, select_stuff *stuff)
|
||||
si->exitsock = _my_tls.locals.exitsock;
|
||||
else
|
||||
{
|
||||
si->exitsock = _my_tls.locals.exitsock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
||||
si->exitsock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
||||
if (si->exitsock == INVALID_SOCKET)
|
||||
{
|
||||
set_winsock_errno ();
|
||||
select_printf ("cannot create socket, %E");
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
int sin_len = sizeof (_my_tls.locals.exitsock_sin);
|
||||
memset (&_my_tls.locals.exitsock_sin, 0, sin_len);
|
||||
@ -1432,6 +1432,7 @@ start_thread_socket (select_record *me, select_stuff *stuff)
|
||||
/* else
|
||||
too bad? */
|
||||
select_printf ("opened new socket %p", si->exitsock);
|
||||
_my_tls.locals.exitsock = si->exitsock;
|
||||
}
|
||||
|
||||
select_printf ("exitsock %p", si->exitsock);
|
||||
@ -1446,8 +1447,7 @@ start_thread_socket (select_record *me, select_stuff *stuff)
|
||||
err:
|
||||
set_winsock_errno ();
|
||||
closesocket (si->exitsock);
|
||||
si->exitsock = INVALID_SOCKET;
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
x
Reference in New Issue
Block a user