зеркало из https://github.com/github/ruby.git
* io.c (rb_io_getline_fast): scan coderange.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15628 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
51411c1f88
Коммит
198e1d074c
|
@ -1,3 +1,7 @@
|
||||||
|
Thu Feb 28 15:29:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
|
* io.c (rb_io_getline_fast): scan coderange.
|
||||||
|
|
||||||
Thu Feb 28 14:36:46 2008 NARUSE, Yui <naruse@ruby-lang.org>
|
Thu Feb 28 14:36:46 2008 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
* string.c (rb_enc_str_copy): removed.
|
* string.c (rb_enc_str_copy): removed.
|
||||||
|
|
6
io.c
6
io.c
|
@ -1801,6 +1801,9 @@ rb_io_getline_fast(rb_io_t *fptr)
|
||||||
{
|
{
|
||||||
VALUE str = Qnil;
|
VALUE str = Qnil;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
long pos = 0;
|
||||||
|
rb_encoding *enc = io_read_encoding(fptr);
|
||||||
|
int cr = 0;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
long pending = READ_DATA_PENDING_COUNT(fptr);
|
long pending = READ_DATA_PENDING_COUNT(fptr);
|
||||||
|
@ -1823,6 +1826,8 @@ rb_io_getline_fast(rb_io_t *fptr)
|
||||||
read_buffered_data(RSTRING_PTR(str)+len, pending, fptr);
|
read_buffered_data(RSTRING_PTR(str)+len, pending, fptr);
|
||||||
}
|
}
|
||||||
len += pending;
|
len += pending;
|
||||||
|
if (cr != ENC_CODERANGE_BROKEN)
|
||||||
|
pos = rb_str_coderange_scan_restartable(RSTRING_PTR(str) + pos, RSTRING_PTR(str) + len, enc, &cr);
|
||||||
if (e) break;
|
if (e) break;
|
||||||
}
|
}
|
||||||
rb_thread_wait_fd(fptr->fd);
|
rb_thread_wait_fd(fptr->fd);
|
||||||
|
@ -1834,6 +1839,7 @@ rb_io_getline_fast(rb_io_t *fptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
str = io_enc_str(str, fptr);
|
str = io_enc_str(str, fptr);
|
||||||
|
ENC_CODERANGE_SET(str, cr);
|
||||||
fptr->lineno++;
|
fptr->lineno++;
|
||||||
lineno = INT2FIX(fptr->lineno);
|
lineno = INT2FIX(fptr->lineno);
|
||||||
return str;
|
return str;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче