summaryrefslogtreecommitdiff
path: root/signal.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-11-21 15:42:12 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-11-21 15:42:12 +0000
commitf1fdbf080efdf954a4773baf2dd088eddb7c03ef (patch)
tree8a2e0db3367f57d457917a2637feec1dd657b6ad /signal.c
parente15f65b004eaa43a013f8d069479c55e70563177 (diff)
* parse.y (str_extend): should check nesting parentheses in #{}.
* process.c (pst_wstopsig): returns nil unless WIFSTOPPED() is non-zero. * process.c (pst_wtermsig): returns nil unless WIFSIGNALED() is non-zero. * process.c (pst_wexitstatus): returns nil unless WIFEXITED() is non-zero. * eval.c (rb_thread_select): tv_sec and tv_usec should not be negative. * signal.c (posix_signal): do not set SA_RESTART for SIGVTALRM. * parse.y (call_args2): block_arg may follow the first argument in call_args2. * eval.c (stack_check): should avoid stack length check during raising SystemStackError exception. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'signal.c')
-rw-r--r--signal.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/signal.c b/signal.c
index 200330d..b3b389e 100644
--- a/signal.c
+++ b/signal.c
@@ -293,7 +293,12 @@ posix_signal(signum, handler)
sigemptyset(&sigact.sa_mask);
sigact.sa_flags = 0;
#if defined(SA_RESTART)
- sigact.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */
+ /* All other signals but VTALRM shall restart restartable syscall
+ VTALRM will cause EINTR to syscall if interrupted.
+ */
+ if (signum != SIGVTALRM) {
+ sigact.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */
+ }
#endif
#ifdef SA_NOCLDWAIT
if (signum == SIGCHLD && handler == SIG_IGN)