1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

Save and restore errno in the signal handler.

* libguile/scmsigs.c (take_signal): Save and restore errno.
This commit is contained in:
Mark H Weaver 2019-05-25 05:20:42 -04:00
parent 91ba73b397
commit 03de93dd5f

View file

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