From 44d8ab72037030aaa1017fa503b4dc7ee3cb11df Mon Sep 17 00:00:00 2001 From: usa Date: Thu, 13 May 2010 04:03:01 +0000 Subject: * io.c (swallow): small optimize. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- io.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/io.c b/io.c index 79f155eea9..a3b32d9111 100644 --- a/io.c +++ b/io.c @@ -2294,23 +2294,23 @@ static inline int swallow(rb_io_t *fptr, int term) { if (NEED_READCONV(fptr)) { + rb_encoding *enc = io_read_encoding(fptr); + int needconv = rb_enc_mbminlen(enc) != 1; VALUE v; make_readconv(fptr, 0); do { size_t cnt; while ((cnt = READ_CHAR_PENDING_COUNT(fptr)) > 0) { const char *p = READ_CHAR_PENDING_PTR(fptr); - rb_encoding *enc = io_read_encoding(fptr); int i; - if (rb_enc_mbminlen(enc) == 1) { + if (needconv) { if (*p != term) return TRUE; while (--i && *++p == term); } else { const char *e = p + cnt; if (rb_enc_ascget(p, e, &i, enc) != term) return TRUE; - while ((p += i) < e && rb_enc_ascget(p, e, &i, enc) == term) - ; + while ((p += i) < e && rb_enc_ascget(p, e, &i, enc) == term); i = (int)(e - p); } io_shift_cbuf(fptr, (int)cnt - i, NULL); -- cgit v1.2.3