diff options
| author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-01-14 03:38:06 +0000 |
|---|---|---|
| committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-01-14 03:38:06 +0000 |
| commit | aff7efb33ead9e4bc91072d90f89af0f558fe401 (patch) | |
| tree | 23c47f4be02366831993f9c2cf09c8827022cbde | |
| parent | 2f3f0de99489f3ac7d958b8b1bf3115650a560bf (diff) | |
| download | ruby-aff7efb33ead9e4bc91072d90f89af0f558fe401.tar.gz ruby-aff7efb33ead9e4bc91072d90f89af0f558fe401.tar.xz ruby-aff7efb33ead9e4bc91072d90f89af0f558fe401.zip | |
* io.c (appendline): reformed.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | io.c | 23 |
2 files changed, 12 insertions, 15 deletions
@@ -1,4 +1,6 @@ -Wed Jan 14 12:35:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> +Wed Jan 14 12:38:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * io.c (appendline): reformed. * io.c (rb_io_s_pipe): reduced nest of rb_ensure of main block. @@ -2016,7 +2016,7 @@ appendline(rb_io_t *fptr, int delim, VALUE *strp, long *lp) if (NEED_READCONV(fptr)) { make_readconv(fptr, 0); - while (1) { + do { const char *p, *e; int searchlen; if (fptr->cbuf_len) { @@ -2050,15 +2050,12 @@ appendline(rb_io_t *fptr, int delim, VALUE *strp, long *lp) return (unsigned char)RSTRING_PTR(str)[RSTRING_LEN(str)-1]; } } - - if (more_char(fptr) == -1) { - *lp = limit; - return EOF; - } - } + } while (more_char(fptr) != -1); + *lp = limit; + return EOF; } - while (1) { + do { long pending = READ_DATA_PENDING_COUNT(fptr); if (pending > 0) { const char *p = READ_DATA_PENDING_PTR(fptr); @@ -2082,15 +2079,13 @@ appendline(rb_io_t *fptr, int delim, VALUE *strp, long *lp) *lp = limit; if (e) return delim; if (limit == 0) - return (unsigned char)RSTRING_PTR(str)[RSTRING_LEN(str)-1]; + return (unsigned char)RSTRING_PTR(str)[RSTRING_LEN(str)-1]; } rb_thread_wait_fd(fptr->fd); rb_io_check_closed(fptr); - if (io_fillbuf(fptr) < 0) { - *lp = limit; - return EOF; - } - } + } while (io_fillbuf(fptr) >= 0); + *lp = limit; + return EOF; } static inline int |
