👻

[Bug #21170] #hash が -1 を返すと Hash が破損するというバグ報告

2025/03/05に公開

[Bug #21170] Corrupted Hash (bad VALUE and missing entry) when -1 returned from .hash

  • #hash-1 を返すと Hash が破損するというバグ報告
class MyObj
  attr_reader :hash

  def initialize(val) = @hash = val
end

values = 0.downto(-16).to_a
hash = {}
values.each do |val|
  hash[MyObj.new(val)] = val
end

# -1 の要素だけ false という不明な値になってしまっている
p hash.values
# => [0, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, false, -16]
  • この不具合は開発版の Ruby 3.5-dev ですでに修正済
GitHubで編集を提案

Discussion