* exceptions.cc (sigframe::call_signal_handler): Return value of
call_signal_handler_now. * sigproc.h (sigframe): Use constructor. * syscalls.cc (_read): Correct errno test prior to calling signal handler.
This commit is contained in:
parent
0ef785e4ee
commit
1ba3935dfb
|
@ -1,3 +1,11 @@
|
|||
Sun Apr 1 20:10:34 2001 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* exceptions.cc (sigframe::call_signal_handler): Return value of
|
||||
call_signal_handler_now.
|
||||
* sigproc.h (sigframe): Use constructor.
|
||||
* syscalls.cc (_read): Correct errno test prior to calling signal
|
||||
handler.
|
||||
|
||||
Sun Apr 1 00:38:06 2001 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* exceptions.cc (sigframe::call_signal_handler): Move outside of "C"
|
||||
|
|
|
@ -1119,14 +1119,22 @@ events_terminate (void)
|
|||
}
|
||||
|
||||
extern "C" {
|
||||
static int __stdcall call_signal_handler_now ();
|
||||
static int __stdcall
|
||||
call_signal_handler_now ()
|
||||
{
|
||||
int sa_flags = sigsave.sa_flags;
|
||||
sigproc_printf ("sa_flags %p", sa_flags);
|
||||
*sigsave.retaddr_on_stack = sigsave.retaddr;
|
||||
sigdelayed0 ();
|
||||
return sa_flags & SA_RESTART;
|
||||
}
|
||||
};
|
||||
|
||||
int
|
||||
sigframe::call_signal_handler ()
|
||||
{
|
||||
unregister ();
|
||||
call_signal_handler_now ();
|
||||
return call_signal_handler_now ();
|
||||
}
|
||||
|
||||
#define pid_offset (unsigned)(((_pinfo *)NULL)->pid)
|
||||
|
@ -1138,16 +1146,6 @@ reset_signal_arrived ()
|
|||
sigproc_printf ("reset signal_arrived");
|
||||
}
|
||||
|
||||
static int __stdcall
|
||||
call_signal_handler_now ()
|
||||
{
|
||||
int sa_flags = sigsave.sa_flags;
|
||||
sigproc_printf ("sa_flags %p", sa_flags);
|
||||
*sigsave.retaddr_on_stack = sigsave.retaddr;
|
||||
sigdelayed0 ();
|
||||
return sa_flags & SA_RESTART;
|
||||
}
|
||||
|
||||
void unused_sig_wrapper ()
|
||||
{
|
||||
/* Signal cleanup stuff. Cleans up stack (too bad that we didn't
|
||||
|
|
|
@ -71,7 +71,7 @@ public:
|
|||
t.get_winapi_lock ();
|
||||
}
|
||||
|
||||
sigframe () {st = NULL;}
|
||||
sigframe (): st (NULL) {}
|
||||
sigframe (sigthread &t, DWORD ebp = (DWORD) __builtin_frame_address (0))
|
||||
{
|
||||
if (!t.frame && t.id == GetCurrentThreadId ())
|
||||
|
|
|
@ -273,7 +273,7 @@ _read (int fd, void *ptr, size_t len)
|
|||
}
|
||||
|
||||
out:
|
||||
if (res >= 0 || get_errno () == EINTR || !thisframe.call_signal_handler ())
|
||||
if (res >= 0 || get_errno () != EINTR || !thisframe.call_signal_handler ())
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue