aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-02-08 15:08:15 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-02-08 15:08:15 +0000
commitbba5e1126b62b24388a19e27f5002d15e15cdae3 (patch)
tree966cc3f6a9fc175c14a0147c138717b97cd426f7
parent7e833da5feab7c68924280e4e183784504e664ba (diff)
downloadruby-bba5e1126b62b24388a19e27f5002d15e15cdae3.tar.gz
* io.c (rb_io_getline_fast): wrong calculation of new position
from rb_str_coderange_scan_restartable(). [ruby-core:28103] * io.c (read_all): ditto. * sprintf.c (rb_str_format): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog9
-rw-r--r--io.c2
-rw-r--r--sprintf.c4
3 files changed, 12 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index aeeb5b70af..95857fac44 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Mon Feb 8 23:49:24 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_getline_fast): wrong calculation of new position
+ from rb_str_coderange_scan_restartable(). [ruby-core:28103]
+
+ * io.c (read_all): ditto.
+
+ * sprintf.c (rb_str_format): ditto.
+
Mon Feb 8 21:03:53 2010 Tanaka Akira <akr@fsij.org>
* ext/socket/socket.c (socket_s_ip_address_list): obtain the scope_id
diff --git a/io.c b/io.c
index 4017778e0c..8926c315f1 100644
--- a/io.c
+++ b/io.c
@@ -2287,7 +2287,7 @@ rb_io_getline_fast(rb_io_t *fptr, rb_encoding *enc)
}
len += pending;
if (cr != ENC_CODERANGE_BROKEN)
- pos = rb_str_coderange_scan_restartable(RSTRING_PTR(str) + pos, RSTRING_PTR(str) + len, enc, &cr);
+ pos += rb_str_coderange_scan_restartable(RSTRING_PTR(str) + pos, RSTRING_PTR(str) + len, enc, &cr);
if (e) break;
}
rb_thread_wait_fd(fptr->fd);
diff --git a/sprintf.c b/sprintf.c
index b5cad94fd7..bec0569b5c 100644
--- a/sprintf.c
+++ b/sprintf.c
@@ -483,7 +483,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
for (t = p; t < end && *t != '%'; t++) ;
PUSH(p, t - p);
if (coderange != ENC_CODERANGE_BROKEN && scanned < blen) {
- scanned = rb_str_coderange_scan_restartable(buf+scanned, buf+blen, enc, &coderange);
+ scanned += rb_str_coderange_scan_restartable(buf+scanned, buf+blen, enc, &coderange);
ENC_CODERANGE_SET(result, coderange);
}
if (t >= end) {
@@ -672,7 +672,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
rb_str_set_len(result, blen);
if (coderange != ENC_CODERANGE_BROKEN && scanned < blen) {
int cr = coderange;
- scanned = rb_str_coderange_scan_restartable(buf+scanned, buf+blen, enc, &cr);
+ scanned += rb_str_coderange_scan_restartable(buf+scanned, buf+blen, enc, &cr);
ENC_CODERANGE_SET(result,
(cr == ENC_CODERANGE_UNKNOWN ?
ENC_CODERANGE_BROKEN : (coderange = cr)));