aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/exceptions.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r--winsup/cygwin/exceptions.cc22
1 files changed, 10 insertions, 12 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index a56b35e..3a3bdb9 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -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