From afb7c557d2af10cdcb16c7edcc9d16224995b9e0 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 22 Nov 2021 12:35:39 +0100 Subject: [PATCH] Cygwin: raise: align return value and error checking to Linux raise(2) on Linux returns the same values and sets errno independent of calling kill(2) or pthread_kill(3). Align code to behave the same. Signed-off-by: Corinna Vinschen --- winsup/cygwin/signal.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc index f4b468664..2cf750f5c 100644 --- a/winsup/cygwin/signal.cc +++ b/winsup/cygwin/signal.cc @@ -303,7 +303,12 @@ raise (int sig) pthread *thread = _my_tls.tid; if (!thread || !__isthreaded) return kill (myself->pid, sig); - return pthread_kill (thread, sig); + + /* Make sure to return -1 and set errno, as on Linux. */ + int err = pthread_kill (thread, sig); + if (err) + set_errno (err); + return err ? -1 : 0; } static int