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 | ee1655232f665ade8560cb8e80cb088705b94c39 (patch) | |
| tree | 863817d431515fef29c21583a1c64efae0436791 /io.c | |
| parent | 4ff2f42eeb69404d53a30525686a071bf16cf3b4 (diff) | |
| download | ruby-ee1655232f665ade8560cb8e80cb088705b94c39.tar.gz ruby-ee1655232f665ade8560cb8e80cb088705b94c39.tar.xz ruby-ee1655232f665ade8560cb8e80cb088705b94c39.zip | |
* 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: http://svn.ruby-lang.org/repos/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) { |
