From 206b1e558a1106db88de42abaabb893eb97aec81 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 18 Mar 2008 01:49:44 +0000 Subject: [PATCH] Fix our printf implementation to follow spec: if a star parameter value for a precision is negative, act as though precision weren't specified at all, that is the whole .* part of the format spec should be ignored. Our previous coding took it as .0 which is certainly wrong. Per report from Kris Jurka and local testing. Possibly this should be back-patched, but it would be good to get some more testing first; in any case there are no known cases where there's really a problem on the backend side. --- src/port/snprintf.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/port/snprintf.c b/src/port/snprintf.c index 415eb89948..3ccac709e1 100644 --- a/src/port/snprintf.c +++ b/src/port/snprintf.c @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $PostgreSQL: pgsql/src/port/snprintf.c,v 1.34 2007/03/26 21:44:11 momjian Exp $ + * $PostgreSQL: pgsql/src/port/snprintf.c,v 1.35 2008/03/18 01:49:44 tgl Exp $ */ #include "c.h" @@ -565,7 +565,10 @@ nextch2: { precision = starval; if (precision < 0) + { precision = 0; + pointflag = 0; + } } else { @@ -590,7 +593,10 @@ nextch2: { precision = starval; if (precision < 0) + { precision = 0; + pointflag = 0; + } } else {