diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-26 16:09:29 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-26 16:09:29 +0000 |
commit | db6ec3105ea5c3b7e30e15ec0a0b4d1a5dbe0ac3 (patch) | |
tree | 18544cbe90f7e147a0c7cd4dee7ecc700e2f7a01 /io.c | |
parent | 99a26ac1642cbe3f27f939cc53c0bef5a0ac15a1 (diff) | |
download | ruby-db6ec3105ea5c3b7e30e15ec0a0b4d1a5dbe0ac3.tar.gz |
* include/ruby/encoding.h (rb_econv_result_t): enumeration constant:
econv_incomplete_input.
* io.c (finish_writeconv): check econv_incomplete_input.
* transcode.c (transcode_restartable0): return econv_incomplete_input
for unexpected end of source buffer.
(trans_sweep): check econv_incomplete_input.
(rb_trans_conv): ditto.
(rb_econv_convert0): ditto.
(rb_econv_convert): ditto.
(transcode_loop): ditto.
(make_econv_exception): change message for econv_incomplete_input.
(econv_result_to_symbol): return :incomplete_input for
econv_incomplete_input.
(ecerr_incomplete_input): new method.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18875 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -2967,7 +2967,7 @@ finish_writeconv(rb_io_t *fptr, int noraise) de = buf + sizeof(buf); res = rb_econv_convert(fptr->writeconv, NULL, NULL, &dp, de, 0); while (dp-ds) { -retry: + retry: r = rb_write_internal(fptr->fd, ds, dp-ds); if (r == dp-ds) break; @@ -2987,6 +2987,7 @@ retry: rb_econv_check_error(fptr->writeconv); } if (res == econv_invalid_byte_sequence || + res == econv_incomplete_input || res == econv_undefined_conversion) { break; } @@ -3009,6 +3010,7 @@ retry: rb_econv_check_error(fptr->writeconv); } if (res == econv_invalid_byte_sequence || + res == econv_incomplete_input || res == econv_undefined_conversion) { break; } @@ -3603,7 +3605,7 @@ rb_io_mode_flags(const char *mode) } } -finished: + finished: if ((flags & FMODE_BINMODE) && (flags & FMODE_TEXTMODE)) goto error; @@ -7051,7 +7053,7 @@ copy_stream_sendfile(struct copy_stream_struct *stp) } } -retry_sendfile: + retry_sendfile: if (use_pread) { ss = simple_sendfile(stp->dst_fd, stp->src_fd, &src_offset, copy_length); } @@ -7095,7 +7097,7 @@ static ssize_t copy_stream_read(struct copy_stream_struct *stp, char *buf, int len, off_t offset) { ssize_t ss; -retry_read: + retry_read: if (offset == (off_t)-1) ss = read(stp->src_fd, buf, len); else { @@ -7231,7 +7233,7 @@ copy_stream_func(void *arg) copy_stream_read_write(stp); #ifdef USE_SENDFILE -finish: + finish: #endif return Qnil; } |