aboutsummaryrefslogtreecommitdiffstats
path: root/ext/monitor
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-02-06 09:14:40 +0900
committerJeremy Evans <code@jeremyevans.net>2021-07-25 13:09:03 -0700
commit070557afc4ca83876b951fe090806b59e3867ae5 (patch)
tree9756aa96026efd552184011ad45c05f2027e19aa /ext/monitor
parent8897098b5ca3ce987307d1799f7765e6a279ff0d (diff)
downloadruby-070557afc4ca83876b951fe090806b59e3867ae5.tar.gz
Distinguish signal and timeout [Bug #16608]
Diffstat (limited to 'ext/monitor')
-rw-r--r--ext/monitor/monitor.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/monitor/monitor.c b/ext/monitor/monitor.c
index 00d663195f..10209cf2aa 100644
--- a/ext/monitor/monitor.c
+++ b/ext/monitor/monitor.c
@@ -149,8 +149,8 @@ monitor_wait_for_cond_body(VALUE v)
struct wait_for_cond_data *data = (struct wait_for_cond_data *)v;
struct rb_monitor *mc = monitor_ptr(data->monitor);
// cond.wait(monitor.mutex, timeout)
- rb_funcall(data->cond, rb_intern("wait"), 2, mc->mutex, data->timeout);
- return Qtrue;
+ VALUE signaled = rb_funcall(data->cond, rb_intern("wait"), 2, mc->mutex, data->timeout);
+ return RTEST(signaled) ? Qtrue : Qfalse;
}
static VALUE