diff options
author | Lukas Larsson <[email protected]> | 2016-09-05 17:24:53 +0200 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2016-09-05 17:24:53 +0200 |
commit | 017725fc8a7d1d45eb1c9579b5cd0996d46c11a2 (patch) | |
tree | cf1875384d0d75a0461661b7a9eada3be9b1699d /erts/emulator/sys/unix/sys.c | |
parent | cf88d37535e889adb5252c4110d53f5a4fd7f5b9 (diff) | |
parent | 2c9f81b8b030062fb7cbfc4250b2069f73e57cc8 (diff) | |
download | otp-017725fc8a7d1d45eb1c9579b5cd0996d46c11a2.tar.gz otp-017725fc8a7d1d45eb1c9579b5cd0996d46c11a2.tar.bz2 otp-017725fc8a7d1d45eb1c9579b5cd0996d46c11a2.zip |
Merge branch 'maint'
Diffstat (limited to 'erts/emulator/sys/unix/sys.c')
-rw-r--r-- | erts/emulator/sys/unix/sys.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/erts/emulator/sys/unix/sys.c b/erts/emulator/sys/unix/sys.c index 6fb86f6dda..089efec3e8 100644 --- a/erts/emulator/sys/unix/sys.c +++ b/erts/emulator/sys/unix/sys.c @@ -715,11 +715,13 @@ static RETSIGTYPE suspend_signal(void) static RETSIGTYPE suspend_signal(int signum) #endif { - int res; - int buf[1]; - do { - res = read(sig_suspend_fds[0], buf, sizeof(int)); - } while (res < 0 && errno == EINTR); + int res, buf[1], __errno = errno; + do { + res = read(sig_suspend_fds[0], buf, sizeof(int)); + } while (res < 0 && errno == EINTR); + + /* restore previous errno in case read changed it */ + errno = __errno; } #endif /* #ifdef ERTS_SYS_SUSPEND_SIGNAL */ |