From: "nagachika (Tomoyuki Chikanaga) via ruby-core" Date: 2024-07-13T07:35:05+00:00 Subject: [ruby-core:118587] [Ruby master Bug#20307] `Hash#update` from compare_by_identity hash can have unfrozen string keys Issue #20307 has been updated by nagachika (Tomoyuki Chikanaga). Backport changed from 3.0: REQUIRED, 3.1: REQUIRED, 3.2: REQUIRED, 3.3: DONE to 3.0: REQUIRED, 3.1: REQUIRED, 3.2: DONE, 3.3: DONE ruby_3_2 commit:90a44bcd39c569d851f73d167955c83f3ff2384f merged revision(s) commit:f36a71e26995b69ff72bc132bbcf40ad89571414. ---------------------------------------- Bug #20307: `Hash#update` from compare_by_identity hash can have unfrozen string keys https://bugs.ruby-lang.org/issues/20307#change-109112 * Author: nobu (Nobuyoshi Nakada) * Status: Closed * Backport: 3.0: REQUIRED, 3.1: REQUIRED, 3.2: DONE, 3.3: DONE ---------------------------------------- I don't think this behavior is expected. ```ruby i = Hash.new.compare_by_identity k = "a" i[k] = 0 h = {}.update(i) p h.compare_by_identity? # => false p h["a"] # => 0 k.upcase! # `k` is still in `h`. p h.keys.include?(k) # => true # but not found. p((h.fetch(k) rescue $!)) # => # h["A"] = 1 p h # => {"A"=>0, "A"=>1} ``` I expect `h` to still have `"a"=>0` entry. -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/