Fix snprintf() to properly handle precision specification for %f.
authorBruce Momjian <bruce@momjian.us>
Sat, 12 Mar 2005 04:00:56 +0000 (04:00 +0000)
committerBruce Momjian <bruce@momjian.us>
Sat, 12 Mar 2005 04:00:56 +0000 (04:00 +0000)
src/port/snprintf.c

index 602f7fed9c698018bd89c71d5520e56f1761d44d..7a7aa91d65aabf9215b008a9670f1dd8274edefe 100644 (file)
@@ -65,7 +65,7 @@
  * causing nasty effects.
  **************************************************************/
 
-/*static char _id[] = "$PostgreSQL: pgsql/src/port/snprintf.c,v 1.18 2005/03/11 19:13:43 momjian Exp $";*/
+/*static char _id[] = "$PostgreSQL: pgsql/src/port/snprintf.c,v 1.19 2005/03/12 04:00:56 momjian Exp $";*/
 
 int            pg_snprintf(char *str, size_t count, const char *fmt,...);
 int            pg_vsnprintf(char *str, size_t count, const char *fmt, va_list args);
@@ -252,6 +252,7 @@ dopr(char *buffer, const char *format, va_list args, char *end)
                    case '8':
                    case '9':
                        if (pointflag)
+                           /* could also be precision */
                            maxwidth = maxwidth * 10 + ch - '0';
                        else
                        { 
@@ -455,6 +456,7 @@ dopr(char *buffer, const char *format, va_list args, char *end)
                        fmtpar[fmtpos].ljust = ljust;
                        fmtpar[fmtpos].len = len;
                        fmtpar[fmtpos].maxwidth = maxwidth;
+                       fmtpar[fmtpos].precision = position;
                        fmtpar[fmtpos].pointflag = pointflag;
                        fmtpar[fmtpos].func = FMTFLOAT;
                        fmtpar[fmtpos].realpos = realpos?realpos:fmtpos;