diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-08-01 07:23:00 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-08-01 07:23:00 +0000 |
commit | e36f44caa8d63e5643924e2f7f242174b4484fa9 (patch) | |
tree | 863817d431515fef29c21583a1c64efae0436791 /io.c | |
parent | 7162db6632fa895b1cf7f2e87b2b4259d8f6afe8 (diff) |
* io.c (rb_io_check_readable, rb_io_check_writable): ensure not
closed at first.
* io.c (rb_io_getline): check readable always. (ruby-bugs:PR#1069)
* io.c (rb_io_each_byte): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 11 |
1 files changed, 5 insertions, 6 deletions
@@ -219,6 +219,7 @@ void rb_io_check_readable(fptr) OpenFile *fptr; { + rb_io_check_closed(fptr); if (!(fptr->mode & FMODE_READABLE)) { rb_raise(rb_eIOError, "not opened for reading"); } @@ -236,6 +237,7 @@ void rb_io_check_writable(fptr) OpenFile *fptr; { + rb_io_check_closed(fptr); if (!(fptr->mode & FMODE_WRITABLE)) { rb_raise(rb_eIOError, "not opened for writing"); } @@ -1007,6 +1009,7 @@ rb_io_getline(rs, fptr) { VALUE str = Qnil; + rb_io_check_readable(fptr); if (NIL_P(rs)) { str = read_all(fptr, 0, Qnil); } @@ -1082,7 +1085,6 @@ rb_io_gets_m(argc, argv, io) rb_scan_args(argc, argv, "1", &rs); } GetOpenFile(io, fptr); - rb_io_check_readable(fptr); str = rb_io_getline(rs, fptr); if (!NIL_P(str)) { @@ -1170,7 +1172,6 @@ rb_io_readlines(argc, argv, io) rb_scan_args(argc, argv, "1", &rs); } GetOpenFile(io, fptr); - rb_io_check_readable(fptr); ary = rb_ary_new(); while (!NIL_P(line = rb_io_getline(rs, fptr))) { rb_ary_push(ary, line); @@ -1195,7 +1196,6 @@ rb_io_each_line(argc, argv, io) rb_scan_args(argc, argv, "1", &rs); } GetOpenFile(io, fptr); - rb_io_check_readable(fptr); while (!NIL_P(str = rb_io_getline(rs, fptr))) { rb_yield(str); } @@ -1211,10 +1211,10 @@ rb_io_each_byte(io) int c; GetOpenFile(io, fptr); - rb_io_check_readable(fptr); - f = fptr->f; for (;;) { + rb_io_check_readable(fptr); + f = fptr->f; READ_CHECK(f); TRAP_BEG; c = getc(f); @@ -3092,7 +3092,6 @@ argf_getline(argc, argv) rb_scan_args(argc, argv, "1", &rs); } GetOpenFile(current_file, fptr); - rb_io_check_readable(fptr); line = rb_io_getline(rs, fptr); } if (NIL_P(line) && next_p != -1) { |