From: "h.shirosaki (Hiroshi Shirosaki)" <h.shirosaki@...>
Date: 2012-09-15T21:05:01+09:00
Subject: [ruby-core:47541] [ruby-trunk - Bug #6764] IO#read(size, buf) causes can't set length of shared string in trunk (2.0.0dev)


Issue #6764 has been updated by h.shirosaki (Hiroshi Shirosaki).

File fix_read_buf.patch added

I see this bug with rubyzip. I tried to create a patch.
----------------------------------------
Bug #6764: IO#read(size, buf) causes can't set length of shared string in trunk (2.0.0dev)
https://bugs.ruby-lang.org/issues/6764#change-29324

Author: nahi (Hiroshi Nakamura)
Status: Assigned
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-07-11 trunk 36357) [i686-linux] 


=begin
http://travis-ci.org/#!/nahi/httpclient/jobs/1842569

  Error: test_post_with_custom_multipart_and_file(TestHTTPClient)
    RuntimeError: can't set length of shared string
  /home/vagrant/builds/nahi/httpclient/lib/httpclient/http.rb:561:in `read'
       558:
       559:       def dump_file(io, dev)
       560:         buf = ''
    => 561:         while !io.read(@chunk_size, buf).nil?
       562:           dev << buf
       563:         end
       564:       end
  /home/vagrant/builds/nahi/httpclient/lib/httpclient/http.rb:561:in `dump_file'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient/http.rb:483:in `block in dump'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient/http.rb:480:in `each'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient/http.rb:480:in `dump'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient/http.rb:896:in `dump'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient/session.rb:612:in `block in query'
  /home/vagrant/.rvm/rubies/ruby-head/lib/ruby/2.0.0/timeout.rb:68:in `timeout'
  /home/vagrant/.rvm/rubies/ruby-head/lib/ruby/2.0.0/timeout.rb:99:in `timeout'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient/session.rb:610:in `query'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient/session.rb:161:in `query'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient.rb:1060:in `do_get_block'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient.rb:869:in `block in do_request'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient.rb:956:in `protect_keep_alive_disconnected'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient.rb:870:in `do_request'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient.rb:756:in `request'
  /home/vagrant/builds/nahi/httpclient/lib/httpclient.rb:666:in `post'
  /home/vagrant/builds/nahi/httpclient/test/test_httpclient.rb:769:in `block in test_post_with_custom_multipart_and_file'
  /home/vagrant/builds/nahi/httpclient/test/test_httpclient.rb:765:in `open'
  /home/vagrant/builds/nahi/httpclient/test/test_httpclient.rb:765:in `test_post_with_custom_multipart_and_file'
=end


-- 
http://bugs.ruby-lang.org/