diff options
author | Jeremy Evans <code@jeremyevans.net> | 2020-05-25 19:29:32 -0700 |
---|---|---|
committer | Jeremy Evans <code@jeremyevans.net> | 2020-05-25 21:38:35 -0700 |
commit | 4e1f2283b432e833bd4e6f7724ba0496760e68e8 (patch) | |
tree | 3bfb8dfe70a7704b02ee6b61a965ef73cac8bf27 /thread.c | |
parent | faab5cbeb762adec4983d603d71e72add5108249 (diff) |
Make Thread#thread_variable? similar to #thread_variable_get
Don't use rb_check_id, which only works for pinned symbols.
Switch inadvertent creation test for thread_variable? to
only check for pinned symbols, same as thread_variable_get
and thread_variable_set.
Make key variable name in thread_local_set match
thread_local_get and thread_variable?.
Fixes [Bug #16906]
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3145
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 9 |
1 files changed, 3 insertions, 6 deletions
@@ -3468,7 +3468,7 @@ rb_thread_variable_get(VALUE thread, VALUE key) */ static VALUE -rb_thread_variable_set(VALUE thread, VALUE id, VALUE val) +rb_thread_variable_set(VALUE thread, VALUE key, VALUE val) { VALUE locals; @@ -3477,7 +3477,7 @@ rb_thread_variable_set(VALUE thread, VALUE id, VALUE val) } locals = rb_thread_local_storage(thread); - return rb_hash_aset(locals, rb_to_symbol(id), val); + return rb_hash_aset(locals, rb_to_symbol(key), val); } /* @@ -3667,16 +3667,13 @@ static VALUE rb_thread_variable_p(VALUE thread, VALUE key) { VALUE locals; - ID id = rb_check_id(&key); - - if (!id) return Qfalse; if (LIKELY(!THREAD_LOCAL_STORAGE_INITIALISED_P(thread))) { return Qfalse; } locals = rb_thread_local_storage(thread); - if (rb_hash_lookup(locals, ID2SYM(id)) != Qnil) { + if (rb_hash_lookup(locals, rb_to_symbol(key)) != Qnil) { return Qtrue; } else { |