* io.c (io_write): must check returned value from fwrite() before

test with ferror().  (ruby-bugs-ja:PR#350)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2002-10-08 05:34:45 +00:00
parent e2d1e7cfe4
commit 00882bfe35
2 changed files with 9 additions and 6 deletions

View File

@ -1,3 +1,8 @@
Tue Oct 8 14:19:07 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
* io.c (io_write): must check returned value from fwrite() before
test with ferror(). (ruby-bugs-ja:PR#350)
Tue Oct 8 10:55:23 2002 Tanaka Akira <akr@m17n.org>
* lib/prettyprint.rb (PrettyPrint.singleline_format): new method.

10
io.c
View File

@ -366,17 +366,15 @@ io_write(io, str)
ptr = RSTRING(str)->ptr;
n = RSTRING(str)->len;
do {
#ifdef __human68k__
do {
if (fputc(*ptr++, f) == EOF) {
if (ferror(f)) rb_sys_fail(fptr->path);
break;
}
--n;
} while (--n > 0);
#else
r = fwrite(ptr, 1, n, f);
ptr += r;
n -= r;
for (; (r = fwrite(ptr, 1, n, f)) < n; ptr += r, n -= r) {
if (ferror(f)) {
if (rb_io_wait_writable(fileno(f))) {
clearerr(f);
@ -384,8 +382,8 @@ io_write(io, str)
}
rb_sys_fail(fptr->path);
}
}
#endif
} while (n > 0);
n = ptr - RSTRING(str)->ptr;
if (fptr->mode & FMODE_SYNC) {
io_fflush(f, fptr);