diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index d2d89058b..33549f920 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+Sun Apr  1 00:24:14 2001  Christopher Faylor <cgf@cygnus.com>
+
+	* exceptions.cc (call_signal_handler_now): Rename from
+	call_signal_handler to avoid C++ confusion.
+
 Sun Apr  1 00:08:15 2001  Christopher Faylor <cgf@cygnus.com>
 
 	* path.cc (fillout_mntent): Always remove drive root directories from
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 7efba7f05..aa3fd1180 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -1127,15 +1127,8 @@ reset_signal_arrived ()
   sigproc_printf ("reset signal_arrived");
 }
 
-int
-sigframe::call_signal_handler ()
-{
-  unregister ();
-  ::call_signal_handler ();
-}
-
-int __stdcall
-call_signal_handler ()
+static int __stdcall
+call_signal_handler_now ()
 {
   int sa_flags = sigsave.sa_flags;
   sigproc_printf ("sa_flags %p", sa_flags);
@@ -1144,6 +1137,13 @@ call_signal_handler ()
   return sa_flags & SA_RESTART;
 }
 
+int
+sigframe::call_signal_handler ()
+{
+  unregister ();
+  call_signal_handler_now ();
+}
+
 void unused_sig_wrapper ()
 {
 /* Signal cleanup stuff.  Cleans up stack (too bad that we didn't
@@ -1160,7 +1160,7 @@ _sigreturn:\n\
 \n\
 	cmpl	$0,%4		# Did a signal come in?\n\
 	jz	1f		# No, if zero\n\
-	call	_call_signal_handler@0 # yes handle the signal\n\
+	call	_call_signal_handler_now@0 # yes handle the signal\n\
 \n\
 # FIXME: There is a race here.  The signal handler could set up\n\
 # the sigsave structure between _call_signal_handler and the\n\