mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* missing/vsnprintf.c (BSD_vfprintf): fix for test_sprintf_comb.rb, by
wanabe in [ruby-dev:36935]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20911 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
941e77dc91
commit
3bad2b6ed9
2 changed files with 13 additions and 2 deletions
|
|
@ -1,3 +1,8 @@
|
||||||
|
Mon Dec 22 12:25:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* missing/vsnprintf.c (BSD_vfprintf): fix for test_sprintf_comb.rb, by
|
||||||
|
wanabe in [ruby-dev:36935].
|
||||||
|
|
||||||
Mon Dec 22 12:05:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Mon Dec 22 12:05:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* configure.in (mingw): no longer uses snprintf and vsnprintf of
|
* configure.in (mingw): no longer uses snprintf and vsnprintf of
|
||||||
|
|
|
||||||
|
|
@ -753,6 +753,8 @@ reswitch: switch (ch) {
|
||||||
#ifdef FLOATING_POINT
|
#ifdef FLOATING_POINT
|
||||||
case 'e': /* anomalous precision */
|
case 'e': /* anomalous precision */
|
||||||
case 'E':
|
case 'E':
|
||||||
|
if (prec != 0)
|
||||||
|
flags |= ALT;
|
||||||
prec = (prec == -1) ?
|
prec = (prec == -1) ?
|
||||||
DEFPREC + 1 : prec + 1;
|
DEFPREC + 1 : prec + 1;
|
||||||
/* FALLTHROUGH */
|
/* FALLTHROUGH */
|
||||||
|
|
@ -782,7 +784,7 @@ fp_begin: _double = va_arg(ap, double);
|
||||||
cp = cvt(_double, prec, flags, &softsign,
|
cp = cvt(_double, prec, flags, &softsign,
|
||||||
&expt, ch, &ndig);
|
&expt, ch, &ndig);
|
||||||
if (ch == 'g' || ch == 'G') {
|
if (ch == 'g' || ch == 'G') {
|
||||||
if (expt <= -4 || expt > prec)
|
if (expt <= -4 || (expt > prec && expt > 1))
|
||||||
ch = (ch == 'g') ? 'e' : 'E';
|
ch = (ch == 'g') ? 'e' : 'E';
|
||||||
else
|
else
|
||||||
ch = 'g';
|
ch = 'g';
|
||||||
|
|
@ -798,6 +800,8 @@ fp_begin: _double = va_arg(ap, double);
|
||||||
size = expt;
|
size = expt;
|
||||||
if (prec || flags & ALT)
|
if (prec || flags & ALT)
|
||||||
size += prec + 1;
|
size += prec + 1;
|
||||||
|
} else if (!prec) { /* "0" */
|
||||||
|
size = 1;
|
||||||
} else /* "0.X" */
|
} else /* "0.X" */
|
||||||
size = prec + 2;
|
size = prec + 2;
|
||||||
} else if (expt >= ndig) { /* fixed g fmt */
|
} else if (expt >= ndig) { /* fixed g fmt */
|
||||||
|
|
@ -1008,13 +1012,15 @@ number: if ((dprec = prec) >= 0)
|
||||||
if (ch >= 'f') { /* 'f' or 'g' */
|
if (ch >= 'f') { /* 'f' or 'g' */
|
||||||
if (_double == 0) {
|
if (_double == 0) {
|
||||||
/* kludge for __dtoa irregularity */
|
/* kludge for __dtoa irregularity */
|
||||||
if (prec == 0 ||
|
if (ndig <= 1 &&
|
||||||
(flags & ALT) == 0) {
|
(flags & ALT) == 0) {
|
||||||
PRINT("0", 1);
|
PRINT("0", 1);
|
||||||
} else {
|
} else {
|
||||||
PRINT("0.", 2);
|
PRINT("0.", 2);
|
||||||
PAD(ndig - 1, zeroes);
|
PAD(ndig - 1, zeroes);
|
||||||
}
|
}
|
||||||
|
} else if (expt == 0 && ndig == 0 && (flags & ALT) == 0) {
|
||||||
|
PRINT("0", 1);
|
||||||
} else if (expt <= 0) {
|
} else if (expt <= 0) {
|
||||||
PRINT("0.", 2);
|
PRINT("0.", 2);
|
||||||
PAD(-expt, zeroes);
|
PAD(-expt, zeroes);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue