[newlib-cygwin/cygwin-3_3-branch] Cygwin: raise: align return value and error checking to Linux
Corinna Vinschen
corinna@sourceware.org
Mon Nov 22 11:52:03 GMT 2021
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=71bc312fef620ce7444387e76f67a0448097635b
commit 71bc312fef620ce7444387e76f67a0448097635b
Author: Corinna Vinschen <corinna@vinschen.de>
Date: Mon Nov 22 12:35:39 2021 +0100
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 <corinna@vinschen.de>
Diff:
---
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
More information about the Cygwin-cvs
mailing list