Bug #8625

IO#read(len, buf) shortens buf even if data is not read actually

Added by Nobuhiro IMAI 9 months ago. Updated 2 months ago.

[ruby-core:55951]
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

Description

=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

History

#1 Updated by Masaki Matsushita 9 months ago

  • Status changed from Open to Assigned
  • Assignee set to Nobuyoshi Nakada

Nakada-san, what do you think?

#2 Updated by Masaki Matsushita 2 months ago

  • Assignee changed from Nobuyoshi Nakada to Masaki Matsushita

Also available in: Atom PDF