summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--sprintf.c20
2 files changed, 7 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index f5e05eb3db..42ae7eee8d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Nov 27 17:18:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): need not to truncate string if no
+ width specifier given for %s. [ruby-dev:29952]
+
Sun Nov 26 16:36:46 2006 URABE Shyouhei <shyouhei@ruby-lang.org>
* version.h: addition of RUBY_PATCHLEVEL.
diff --git a/sprintf.c b/sprintf.c
index 26142dea51..ffe4e22855 100644
--- a/sprintf.c
+++ b/sprintf.c
@@ -420,23 +420,7 @@ rb_f_sprintf(argc, argv)
len = prec;
}
}
- {
- char *s, *send;
- long l;
-
- s = RSTRING(str)->ptr;
- send = s + RSTRING(str)->len;
- l = 0;
- while (s < send) {
- long n = mbclen(*s);
- if (l + n > len) {
- len = l;
- break;
- }
- l += n;
- s += n;
- }
- }
+ /* need to adjust multi-byte string pos */
if (flags&FWIDTH) {
if (width > len) {
CHECK(width);
@@ -446,7 +430,7 @@ rb_f_sprintf(argc, argv)
buf[blen++] = ' ';
}
}
- memcpy(&buf[blen], RSTRING(str)->ptr, len);
+ memcpy(&buf[blen], RSTRING_PTR(str), len);
blen += len;
if (flags&FMINUS) {
while (width--) {