aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--io.c10
2 files changed, 9 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 3a62060516..61d104f610 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sat Mar 01 10:31:19 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (read_all, rb_io_getline_fast): encoding is rb_input_encoding.
+
Sat Mar 1 10:09:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* string.c (tr_setup_table, rb_str_split_m, rb_str_chomp_bang):
diff --git a/io.c b/io.c
index cfb86e44c9..964d0cd121 100644
--- a/io.c
+++ b/io.c
@@ -1359,8 +1359,8 @@ read_all(rb_io_t *fptr, long siz, VALUE str)
long bytes = 0;
long n;
long pos = 0;
- rb_encoding *enc = io_read_encoding(fptr);
- int cr = 0;
+ rb_encoding *enc = io_input_encoding(fptr);
+ int cr = fptr->enc2 ? ENC_CODERANGE_BROKEN : 0;
if (siz == 0) siz = BUFSIZ;
if (NIL_P(str)) {
@@ -1802,8 +1802,8 @@ rb_io_getline_fast(rb_io_t *fptr)
VALUE str = Qnil;
int len = 0;
long pos = 0;
- rb_encoding *enc = io_read_encoding(fptr);
- int cr = 0;
+ rb_encoding *enc = io_input_encoding(fptr);
+ int cr = fptr->enc2 ? ENC_CODERANGE_BROKEN : 0;
for (;;) {
long pending = READ_DATA_PENDING_COUNT(fptr);
@@ -1839,7 +1839,7 @@ rb_io_getline_fast(rb_io_t *fptr)
}
str = io_enc_str(str, fptr);
- ENC_CODERANGE_SET(str, cr);
+ if (!fptr->enc2) ENC_CODERANGE_SET(str, cr);
fptr->lineno++;
lineno = INT2FIX(fptr->lineno);
return str;