From: nobu@... Date: 2014-12-29T02:18:37+00:00 Subject: [ruby-core:67189] [ruby-trunk - Bug #10667] [Closed] thread_variable_set/get doesn't work for dynamically created symbols Issue #10667 has been updated by Nobuyoshi Nakada. Status changed from Open to Closed % Done changed from 0 to 100 Applied in changeset r49055. ---------- thread.c: fix dynamic symbol keys * thread.c (rb_thread_variable_get): fix dynamic symbol keys. rb_check_id() returns non-zero only for static symbols, whereas thread local variable keys can be dynamic symbols. [ruby-core:67185] [Bug #10667] ---------------------------------------- Bug #10667: thread_variable_set/get doesn't work for dynamically created symbols https://bugs.ruby-lang.org/issues/10667#change-50670 * Author: Stefan Kaes * Status: Closed * Priority: Normal * Assignee: * Category: core * Target version: current: 2.2.0 * ruby -v: ruby 2.2.0p1 (2014-12-26 revision 49031) [x86_64-darwin13] * Backport: 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED ---------------------------------------- Adding the following test to thread_test.rb shows the problem: ~~~ruby def test_thread_variables_work_for_dynamically_created_symbols t = Thread.new {}.join key_str = "foo#{rand}" key_sym = key_str.to_sym t.thread_variable_set(key_sym, "bar") assert_equal "bar", t.thread_variable_get(key_str) assert_equal "bar", t.thread_variable_get(key_sym) end ~~~ Test output: ~~~ [15045/15894] TestThread#test_thread_variables_work_for_dynamically_created_symbols = 0.00 1) Failure: TestThread#test_thread_variables_work_for_dynamically_created_symbols [/Users/stefan.kaes/src/ruby/test/ruby/test_thread.rb:94]: <"bar"> expected but was . ~~~ -- https://bugs.ruby-lang.org/