mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* sprintf.c (rb_str_format): "%#.0o" should keep prefix where
"%#.0x" should not. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15648 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
4e6e5a4316
commit
18e70b266f
3 changed files with 16 additions and 8 deletions
|
@ -1,3 +1,8 @@
|
|||
Sat Mar 1 09:36:08 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* sprintf.c (rb_str_format): "%#.0o" should keep prefix where
|
||||
"%#.0x" should not.
|
||||
|
||||
Sat Mar 1 02:35:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* bignum.c (big2str_find_n1): check integer overflow.
|
||||
|
|
13
sprintf.c
13
sprintf.c
|
@ -684,18 +684,21 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
|
|||
pp++;
|
||||
}
|
||||
}
|
||||
if (prefix && !prefix[1]) {
|
||||
if (prefix && !prefix[1]) { /* octal */
|
||||
if (dots) {
|
||||
prefix = 0;
|
||||
}
|
||||
else if (len == 1 && *s == '0') {
|
||||
if (flags & FPREC) len = 0;
|
||||
prefix = 0;
|
||||
len = 0;
|
||||
if (flags & FPREC) prec--;
|
||||
}
|
||||
else if ((flags & FPREC) && (prec > len)) {
|
||||
prefix = 0;
|
||||
}
|
||||
}
|
||||
else if (len == 1 && *s == '0') {
|
||||
prefix = 0;
|
||||
}
|
||||
if (prefix) {
|
||||
width -= strlen(prefix);
|
||||
}
|
||||
|
@ -705,8 +708,8 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
|
|||
}
|
||||
else {
|
||||
if (prec < len) {
|
||||
if ((flags & FPREC) && len == 1 && *s == '0') len = 0;
|
||||
else prec = len;
|
||||
if (!prefix && prec == 0 && len == 1 && *s == '0') len = 0;
|
||||
prec = len;
|
||||
}
|
||||
width -= prec;
|
||||
}
|
||||
|
|
|
@ -145,7 +145,7 @@ class TestSprintfComb < Test::Unit::TestCase
|
|||
radix = 2
|
||||
digitmap = {0 => '0', 1 => '1'}
|
||||
complement = !pl && !sp
|
||||
prefix = '0b' if hs
|
||||
prefix = '0b' if hs && v != 0
|
||||
when 'd'
|
||||
radix = 10
|
||||
digitmap = {}
|
||||
|
@ -161,13 +161,13 @@ class TestSprintfComb < Test::Unit::TestCase
|
|||
digitmap = {}
|
||||
16.times {|i| digitmap[i] = i.to_s(16).upcase }
|
||||
complement = !pl && !sp
|
||||
prefix = '0X' if hs
|
||||
prefix = '0X' if hs && v != 0
|
||||
when 'x'
|
||||
radix = 16
|
||||
digitmap = {}
|
||||
16.times {|i| digitmap[i] = i.to_s(16) }
|
||||
complement = !pl && !sp
|
||||
prefix = '0x' if hs
|
||||
prefix = '0x' if hs && v != 0
|
||||
else
|
||||
raise "unexpected type: #{type.inspect}"
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue