aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/sys/unix/sys.c
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2016-09-05 17:24:53 +0200
committerLukas Larsson <[email protected]>2016-09-05 17:24:53 +0200
commit017725fc8a7d1d45eb1c9579b5cd0996d46c11a2 (patch)
treecf1875384d0d75a0461661b7a9eada3be9b1699d /erts/emulator/sys/unix/sys.c
parentcf88d37535e889adb5252c4110d53f5a4fd7f5b9 (diff)
parent2c9f81b8b030062fb7cbfc4250b2069f73e57cc8 (diff)
downloadotp-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.c12
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 */