[MacRuby-devel] [MacRuby] #577: EXC_BAD_ACCESS in IO.read

MacRuby ruby-noreply at macosforge.org
Wed Jan 27 00:34:29 PST 2010

#577: EXC_BAD_ACCESS in IO.read
 Reporter:  spamtrap1@…          |       Owner:  lsansonetti@…        
     Type:  defect               |      Status:  new                  
 Priority:  minor                |   Milestone:                       
Component:  MacRuby              |    Keywords:                       

Comment(by spamtrap1@…):

 I've been looking a little bit at this, but since i'm unable to build
 trunk, all i can do is pen & paper, and guess :)

 in io.c:1108 (io_read), a distinction is made between reading x bytes, or
 reading the whole file.
 If we're reading the whole file
     if (NIL_P(len)) {
         return rb_io_read_all(io_struct, outbuf);

 Or we're reading part of the file io.c:1145 (io_read)
     const long data_read = rb_io_read_internal(io_struct, buf, size);
     if (data_read == 0) {
         return Qnil;
     CFDataSetLength(data, data_read);

 So far, so good.
 The very last thing '''rb_io_read_internal''' io.c:983
 (rb_io_read_internal) does, is to call
     rb_io_read_update(io_struct, n);


 Which positions the file pointer at the position we just read to.
 This part isn't done by '''rb_io_read_all'''

 Could this be why the eof? call fails after having called IO.read(nil) ?

 Just my $0.02 after a good nights sleep :)


Ticket URL: <http://www.macruby.org/trac/ticket/577#comment:1>
MacRuby <http://macruby.org/>

More information about the MacRuby-devel mailing list