[json] Make JSON.create_id thread-safe

This commit is contained in:
Kenta Murata 2020-12-21 15:45:50 +09:00
Родитель 98cc15ed1e
Коммит 596da98b3f
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: CEFE8AFB6081B062
1 изменённых файлов: 14 добавлений и 1 удалений

Просмотреть файл

@ -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