From 44d8ab72037030aaa1017fa503b4dc7ee3cb11df Mon Sep 17 00:00:00 2001
From: usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
Date: Thu, 13 May 2010 04:03:01 +0000
Subject: [PATCH] * 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);