From da55cfdf724beccb3fcfddf0ce318f9fb1b36c85 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 18 Oct 2010 18:08:58 +0000 Subject: * vsnprintf.c (BSD_vfprintf): use HEXPREFIX flag for prefix of %a. [ruby-core:32841] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vsnprintf.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'vsnprintf.c') diff --git a/vsnprintf.c b/vsnprintf.c index 1f53bc4265..9c15a4b7b6 100644 --- a/vsnprintf.c +++ b/vsnprintf.c @@ -826,8 +826,10 @@ fp_begin: _double = va_arg(ap, double); ch = 'g'; } if (ch == 'a' || ch == 'A') { + flags |= HEXPREFIX; --expt; expsize = exponent(expstr, expt, ch + 'p' - 'a'); + ch += 'x' - 'a'; size = expsize + ndig; size += 2; /* 0x */ if (ndig > 1) @@ -1037,7 +1039,8 @@ long_len: /* prefix */ if (sign) { PRINT(&sign, 1); - } else if (flags & HEXPREFIX) { + } + if (flags & HEXPREFIX) { ox[0] = '0'; ox[1] = ch; PRINT(ox, 2); @@ -1051,7 +1054,7 @@ long_len: PAD_L(dprec - fieldsz, zeroes); if (sign) fieldsz--; - else if (flags & HEXPREFIX) + if (flags & HEXPREFIX) fieldsz -= 2; /* the string or number proper */ @@ -1059,10 +1062,7 @@ long_len: if ((flags & FPT) == 0) { PRINT(cp, fieldsz); } else { /* glue together f_p fragments */ - if (ch == 'a' || ch == 'A') { - ox[0] = '0'; - ox[1] = ch + ('x' - 'a'); - PRINT(ox, 2); + if (flags & HEXPREFIX) { if (ndig > 1 || flags & ALT) { ox[2] = *cp++; ox[3] = '.'; -- cgit v1.2.3