diff options
author | Kenta Murata <mrkn@mrkn.jp> | 2020-12-21 15:45:50 +0900 |
---|---|---|
committer | Kenta Murata <mrkn@mrkn.jp> | 2020-12-21 22:10:42 +0900 |
commit | 596da98b3ff28ff48b10aed0bbe75287862eacbb (patch) | |
tree | bdfe69c9ba9b7886b28063cb9b6b65e6ece2de96 /ext/json | |
parent | 98cc15ed1e9193e17fad6b87cccf8f8b5ade7801 (diff) | |
download | ruby-596da98b3ff28ff48b10aed0bbe75287862eacbb.tar.gz |
[json] Make JSON.create_id thread-safe
Diffstat (limited to 'ext/json')
-rw-r--r-- | ext/json/lib/json/common.rb | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/ext/json/lib/json/common.rb b/ext/json/lib/json/common.rb index c34fa61eb7..747effee12 100644 --- a/ext/json/lib/json/common.rb +++ b/ext/json/lib/json/common.rb @@ -109,7 +109,20 @@ module JSON # JSON.create_id # => 'json_class' attr_accessor :create_id end - self.create_id = 'json_class' + + DEFAULT_CREATE_ID = 'json_class'.freeze + private_constant :DEFAULT_CREATE_ID + + CREATE_ID_TLS_KEY = "JSON.create_id".freeze + private_constant :CREATE_ID_TLS_KEY + + def self.create_id + Thread.current[CREATE_ID_TLS_KEY] || DEFAULT_CREATE_ID + end + + def self.create_id=(new_value) + Thread.current[CREATE_ID_TLS_KEY] = new_value.dup.freeze + end NaN = 0.0/0 |