📑
[Bug #21882] `IO::Buffer#locked` で例外が発生してもロックされたままになるバグ報告
[Bug #21882] IO::Buffer#locked leaves the buffer locked when the block raises
-
IO::Buffer#lockedのブロック内で例外が発生した場合にロックされたままになっているというバグ報告
buf = IO::Buffer.new(100)
buf.locked { fail } rescue nil
buf.locked { p :ok }
# 期待する挙動 => p :ok が呼ばれる
# 実際の挙動 => error: Buffer already locked! (IO::Buffer::LockedError)
- このバグは開発版の Ruby 4.1-dev で修正済み
buf = IO::Buffer.new(100)
buf.locked { fail } rescue nil
buf.locked { p :ok }
# Ruby 4.0 => error: Buffer already locked! (IO::Buffer::LockedError)
# Ruby 4.1 => p :ok が呼ばれる
Discussion