1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Make Thread#join always convert its argument, as before 70f08f1eed

This commit is contained in:
Benoit Daloze 2020-09-21 16:22:04 +02:00
parent 2b73e6ba71
commit 82998918ef
2 changed files with 13 additions and 3 deletions

View file

@ -22,11 +22,10 @@ describe "Thread#join" do
end
it "raises TypeError if the argument is not a valid timeout" do
t = Thread.new { sleep }
t = Thread.new { }
t.join
-> { t.join(:foo) }.should raise_error TypeError
-> { t.join("bar") }.should raise_error TypeError
t.kill
t.join
end
it "returns nil if it is not finished when given a timeout" do

View file

@ -1313,6 +1313,17 @@ thread_join_m(int argc, VALUE *argv, VALUE self)
timeout = argv[0];
}
// Convert the timeout eagerly, so it's always converted and deterministic
if (timeout == Qnil) {
/* unlimited */
}
else if (FIXNUM_P(timeout)) {
/* handled directly in thread_join_sleep() */
}
else {
timeout = rb_to_float(timeout);
}
return thread_join(rb_thread_ptr(self), timeout);
}