mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 11:50:28 +02:00
Save and restore errno in the signal handler.
* libguile/scmsigs.c (take_signal): Save and restore errno.
This commit is contained in:
parent
91ba73b397
commit
03de93dd5f
1 changed files with 2 additions and 0 deletions
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue