From: nobu@... Date: 2021-06-27T02:45:11+00:00 Subject: [ruby-core:104412] [Ruby master Bug#17661] IO#each will segfault when if file is closed inside an `each_byte` block Issue #17661 has been updated by nobu (Nobuyoshi Nakada). Moved the check just after `rb_yield`. And I found that `each_codepoint` also had a similar bug. @wyhaines Could you add a spec for the method? ---------------------------------------- Bug #17661: IO#each will segfault when if file is closed inside an `each_byte` block https://bugs.ruby-lang.org/issues/17661#change-92659 * Author: tenderlovemaking (Aaron Patterson) * Status: Closed * Priority: Normal * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- As reported here: https://twitter.com/asterite/status/1363487990203506689 when iterating through a file's contents with #each_byte, if the filehandle is closed inside of the block yielded to by #each byte, this condition is not detected, and a segmentation fault is thrown. Repro: ```ruby file = http://File.open(__FILE__) file.each_byte do |byte| p byte file.close end ``` Proposed fix is here: https://github.com/ruby/ruby/pull/4217 -- https://bugs.ruby-lang.org/ Unsubscribe: