ruby-changes:2051
From: ko1@a...
Date: 28 Sep 2007 13:20:24 +0900
Subject: [ruby-changes:2051] nobu - Ruby:r13542 (trunk): * io.c (rb_io_getline_fast, rb_io_getline_1): set encoding to the
nobu 2007-09-28 13:20:12 +0900 (Fri, 28 Sep 2007)
New Revision: 13542
Modified files:
trunk/ChangeLog
trunk/io.c
Log:
* io.c (rb_io_getline_fast, rb_io_getline_1): set encoding to the
result string, as well as getc.
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13542&r2=13541
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/io.c?r1=13542&r2=13541
Index: ChangeLog
===================================================================
--- ChangeLog (revision 13541)
+++ ChangeLog (revision 13542)
@@ -1,3 +1,8 @@
+Fri Sep 28 13:20:10 2007 Nobuyoshi Nakada <nobu@r...>
+
+ * io.c (rb_io_getline_fast, rb_io_getline_1): set encoding to the
+ result string, as well as getc.
+
Fri Sep 28 12:51:42 2007 Koichi Sasada <ko1@a...>
* benchmark/bm_app_erb.rb: added.
Index: io.c
===================================================================
--- io.c (revision 13541)
+++ io.c (revision 13542)
@@ -1637,7 +1637,7 @@
}
static VALUE
-rb_io_getline_fast(rb_io_t *fptr, unsigned char delim, long limit)
+rb_io_getline_fast(rb_io_t *fptr, unsigned char delim, long limit, rb_encoding *enc)
{
VALUE str = Qnil;
int c, nolimit = 0;
@@ -1652,6 +1652,7 @@
}
if (!NIL_P(str)) {
+ rb_enc_associate(str, enc);
if (!nolimit) {
fptr->lineno++;
lineno = INT2FIX(fptr->lineno);
@@ -1700,21 +1701,23 @@
static VALUE
rb_io_getline_1(VALUE rs, long limit, VALUE io)
{
+ rb_encoding *enc;
VALUE str = Qnil;
rb_io_t *fptr;
int nolimit = 0;
GetOpenFile(io, fptr);
rb_io_check_readable(fptr);
+ enc = rb_enc_get(io);
if (NIL_P(rs)) {
str = read_all(fptr, 0, Qnil);
if (RSTRING_LEN(str) == 0) return Qnil;
}
else if (limit == 0) {
- return rb_str_new(0,0);
+ return rb_enc_str_new(0, 0, enc);
}
else if (rs == rb_default_rs) {
- return rb_io_getline_fast(fptr, '\n', limit);
+ return rb_io_getline_fast(fptr, '\n', limit, enc);
}
else {
int c, newline;
@@ -1730,7 +1733,8 @@
swallow(fptr, '\n');
}
else if (rslen == 1) {
- return rb_io_getline_fast(fptr, (unsigned char)RSTRING_PTR(rs)[0], limit);
+ return rb_io_getline_fast(fptr, (unsigned char)RSTRING_PTR(rs)[0],
+ limit, enc);
}
else {
rsptr = RSTRING_PTR(rs);
@@ -1758,6 +1762,7 @@
}
if (!NIL_P(str)) {
+ rb_enc_associate(str, enc);
if (!nolimit) {
fptr->lineno++;
lineno = INT2FIX(fptr->lineno);
@@ -1785,7 +1790,7 @@
GetOpenFile(io, fptr);
rb_io_check_readable(fptr);
- return rb_io_getline_fast(fptr, '\n', 0);
+ return rb_io_getline_fast(fptr, '\n', 0, rb_enc_get(io));
}
/*
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml