changeset 244:59c45e295524

Initialize and check precision.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 16 Feb 2016 16:30:51 +0200
parents 5049c220d2ae
children c8595941852b
files th_string.c
diffstat 1 files changed, 4 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/th_string.c	Tue Feb 16 16:30:26 2016 +0200
+++ b/th_string.c	Tue Feb 16 16:30:51 2016 +0200
@@ -243,7 +243,7 @@
         {
             char padMode = ' ', padChar = 0;
             BOOL sign = FALSE;
-            int width = 0, prec = 0;
+            int width = 0, prec = -1;
 
             fmt++;
 
@@ -281,6 +281,7 @@
                 if (!th_isdigit(*fmt))
                     goto out;
 
+                prec = 0;
                 while (th_isdigit(*fmt))
                     prec = prec * 10 + (*fmt++ - '0');
             }
@@ -296,7 +297,7 @@
 
                 case 'u':
                 case 'd':
-                    if (padMode != '0' && padMode != '-' && padMode != ' ')
+                    if ((padMode != '0' && padMode != '-' && padMode != ' ') || prec >= 0)
                         goto out;
 
                     if ((ret = th_vput_itoa(ctx, vputch, va_arg(ap, unsigned int),
@@ -306,7 +307,7 @@
 
                 case 'x':
                 case 'X':
-                    if (padMode != '0' && padMode != '-' && padMode != ' ')
+                    if ((padMode != '0' && padMode != '-' && padMode != ' ') || prec >= 0)
                         goto out;
 
                     if ((ret = th_vput_itoa(ctx, vputch, va_arg(ap, unsigned int),