From: glass.saga@... Date: 2014-02-14T09:47:05+00:00 Subject: [ruby-core:60728] [ruby-trunk - Bug #8625] IO#read(len, buf) shortens buf even if data is not read actually Issue #8625 has been updated by Masaki Matsushita. Assignee changed from Nobuyoshi Nakada to Masaki Matsushita ---------------------------------------- Bug #8625: IO#read(len, buf) shortens buf even if data is not read actually https://bugs.ruby-lang.org/issues/8625#change-45150 * Author: Nobuhiro IMAI * Status: Assigned * Priority: Normal * Assignee: Masaki Matsushita * 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/