diff options
Diffstat (limited to 'mrbgems/mruby-sprintf/src/sprintf.c')
| -rw-r--r-- | mrbgems/mruby-sprintf/src/sprintf.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/mrbgems/mruby-sprintf/src/sprintf.c b/mrbgems/mruby-sprintf/src/sprintf.c index d62a28e8c..e02627b86 100644 --- a/mrbgems/mruby-sprintf/src/sprintf.c +++ b/mrbgems/mruby-sprintf/src/sprintf.c @@ -860,11 +860,11 @@ retry: else { sc = '-'; width--; - v = -v; } mrb_assert(base == 10); snprintf(nbuf, sizeof(nbuf), "%" MRB_PRId, v); s = nbuf; + if (v < 0) s++; /* skip minus sign */ } else { s = nbuf; @@ -974,13 +974,12 @@ retry: if (prec > len) { CHECK(prec - len); - if (v < 0) { - char c = sign_bits(base, p); - FILL(c, prec - len); - } - else if ((flags & (FMINUS|FPREC)) != FMINUS) { + if ((flags & (FMINUS|FPREC)) != FMINUS) { char c = '0'; FILL(c, prec - len); + } else if (v < 0) { + char c = sign_bits(base, p); + FILL(c, prec - len); } } PUSH(s, len); |
