mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* sprintf.c (rb_f_sprintf): adjust precision length to prevent
splitting multi-byte characters. [ruby-list:42389] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
3a1f31129e
commit
a2f6c40d2d
2 changed files with 23 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
Mon Jun 12 22:25:09 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* sprintf.c (rb_f_sprintf): adjust precision length to prevent
|
||||||
|
splitting multi-byte characters. [ruby-list:42389]
|
||||||
|
|
||||||
Sun Jun 11 23:20:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Sun Jun 11 23:20:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* lib/optparse.rb (OptionParser::Arguable#getopts): pass self to the
|
* lib/optparse.rb (OptionParser::Arguable#getopts): pass self to the
|
||||||
|
|
18
sprintf.c
18
sprintf.c
|
@ -13,6 +13,7 @@
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#include "ruby.h"
|
#include "ruby.h"
|
||||||
|
#include "re.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
|
@ -413,6 +414,23 @@ rb_f_sprintf(argc, argv)
|
||||||
len = prec;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (flags&FWIDTH) {
|
if (flags&FWIDTH) {
|
||||||
if (width > len) {
|
if (width > len) {
|
||||||
CHECK(width);
|
CHECK(width);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue