mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
sprintf.c: fix one-off bug
* sprintf.c (rb_str_format): `CHECK` just before `FILL_`, but after another `PUSH`. fix one-off bug. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
74a5dc5825
commit
be2e146a55
1 changed files with 5 additions and 5 deletions
10
sprintf.c
10
sprintf.c
|
@ -791,7 +791,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
|
|||
{
|
||||
volatile VALUE val = GETARG();
|
||||
int valsign;
|
||||
char nbuf[64], *s;
|
||||
char nbuf[BIT_DIGITS(SIZEOF_LONG*CHAR_BIT)+2], *s;
|
||||
const char *prefix = 0;
|
||||
int sign = 0, dots = 0;
|
||||
char sc = 0;
|
||||
|
@ -1014,9 +1014,9 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
|
|||
int plen = (int)strlen(prefix);
|
||||
PUSH(prefix, plen);
|
||||
}
|
||||
CHECK(prec - len);
|
||||
if (dots) PUSH("..", 2);
|
||||
if (prec > len) {
|
||||
CHECK(prec - len);
|
||||
if (!sign && valsign < 0) {
|
||||
char c = sign_bits(base, p);
|
||||
FILL_(c, prec - len);
|
||||
|
@ -1073,15 +1073,15 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
|
|||
if (prec >= len) len = prec + 1; /* integer part 0 */
|
||||
if (sign || (flags&FSPACE)) ++len;
|
||||
if (prec > 0) ++len; /* period */
|
||||
CHECK(len > width ? len : width);
|
||||
fill = width > len ? width - len : 0;
|
||||
if (fill && !(flags&FMINUS) && !(flags&FZERO)) {
|
||||
CHECK(fill + len);
|
||||
if (fill && !(flags&(FMINUS|FZERO))) {
|
||||
FILL_(' ', fill);
|
||||
}
|
||||
if (sign || (flags&FSPACE)) {
|
||||
buf[blen++] = sign > 0 ? '+' : sign < 0 ? '-' : ' ';
|
||||
}
|
||||
if (fill && !(flags&FMINUS) && (flags&FZERO)) {
|
||||
if (fill && (flags&(FMINUS|FZERO)) == FZERO) {
|
||||
FILL_('0', fill);
|
||||
}
|
||||
len = RSTRING_LEN(val) + zero;
|
||||
|
|
Loading…
Add table
Reference in a new issue