From: "no6v (Nobuhiro IMAI)" Date: 2013-07-11T23:54:40+09:00 Subject: [ruby-core:55951] [ruby-trunk - Bug #8625][Open] IO#read(len, buf) shortens buf even if data is not read actually Issue #8625 has been reported by no6v (Nobuhiro IMAI). ---------------------------------------- Bug #8625: IO#read(len, buf) shortens buf even if data is not read actually https://bugs.ruby-lang.org/issues/8625 Author: no6v (Nobuhiro IMAI) Status: Open Priority: Normal Assignee: Category: core Target version: ruby -v: ruby 2.1.0dev (2013-07-11 trunk 41923) [x86_64-linux] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN =begin By r34580, IO#read(len, buf) does not expand buf until data is read actually, but it still shortens if the original buf size is greater than len. Is this an intended behavior? def m(s) IO.pipe do |r, w| t = Thread.new{r.read(2, s)} Thread.pass until t.stop? t.kill t.value end end (1..3).each do |len| s = "x" * len s # => "x", "xx", "xxx" m(s) s # => "x", "xx", "xx" end =end -- http://bugs.ruby-lang.org/