From: nobu@... Date: 2014-06-06T04:39:27+00:00 Subject: [ruby-core:62952] [ruby-trunk - Bug #8625] IO#read(len, buf) shortens buf even if data is not read actually Issue #8625 has been updated by Nobuyoshi Nakada. Description updated Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN to 2.0.0: REQUIRED, 2.1: REQUIRED ---------------------------------------- Bug #8625: IO#read(len, buf) shortens buf even if data is not read actually https://bugs.ruby-lang.org/issues/8625#change-47051 * 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: 2.0.0: REQUIRED, 2.1: REQUIRED ---------------------------------------- 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? ~~~ruby 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 ~~~ -- https://bugs.ruby-lang.org/