Commit 206b1e55 authored by Tom Lane's avatar Tom Lane

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.
parent 9706f54d
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * 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" #include "c.h"
...@@ -565,7 +565,10 @@ nextch2: ...@@ -565,7 +565,10 @@ nextch2:
{ {
precision = starval; precision = starval;
if (precision < 0) if (precision < 0)
{
precision = 0; precision = 0;
pointflag = 0;
}
} }
else else
{ {
...@@ -590,7 +593,10 @@ nextch2: ...@@ -590,7 +593,10 @@ nextch2:
{ {
precision = starval; precision = starval;
if (precision < 0) if (precision < 0)
{
precision = 0; precision = 0;
pointflag = 0;
}
} }
else else
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment