Save and restore errno in the signal handler.
authorMark H Weaver <mhw@netris.org>
Sat, 25 May 2019 09:20:42 +0000 (05:20 -0400)
committerMark H Weaver <mhw@netris.org>
Tue, 18 Jun 2019 06:05:20 +0000 (02:05 -0400)
* libguile/scmsigs.c (take_signal): Save and restore errno.

libguile/scmsigs.c

index 755e657eae508aabf18dc7db0544ff6adc493749..a870f56875c07e22e399f9ee5635daa1cb34f01d 100644 (file)
@@ -129,12 +129,14 @@ static int signal_pipe[2];
 static SIGRETTYPE
 take_signal (int signum)
 {
+  int old_errno = errno;
   char sigbyte = signum;
   full_write (signal_pipe[1], &sigbyte, 1);
 
 #ifndef HAVE_SIGACTION
   signal (signum, take_signal);
 #endif
+  errno = old_errno;
 }
 
 struct signal_pipe_data