changeset 247:2fc282c365a8

Use special error codes for syntax errors in format string.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 16 Feb 2016 18:19:37 +0200
parents e00b547af1a7
children 3a2a29f801ed
files th_string.c
diffstat 1 files changed, 8 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/th_string.c	Tue Feb 16 18:17:33 2016 +0200
+++ b/th_string.c	Tue Feb 16 18:19:37 2016 +0200
@@ -238,7 +238,7 @@
         if (*fmt != '%')
         {
             if ((ret = vputch(ctx, *fmt)) == EOF)
-                return ret;
+                goto out;
         }
         else
         {
@@ -263,12 +263,12 @@
                 {
                     padChar = *fmt++;
                     if (*fmt != '\'')
-                        goto out;
+                        return -101;
                     fmt++;
                 }
 
                 if (*fmt == 0)
-                    goto out;
+                    return -102;
             }
 
             // Get width
@@ -280,7 +280,7 @@
             {
                 fmt++;
                 if (!th_isdigit(*fmt))
-                    goto out;
+                    return -103;
 
                 prec = 0;
                 while (th_isdigit(*fmt))
@@ -294,12 +294,12 @@
                     break;
 
                 case 0:
-                    goto out;
+                    return -104;
 
                 case 'u':
                 case 'd':
                     if ((padMode != '0' && padMode != '-' && padMode != ' ') || prec >= 0)
-                        goto out;
+                        return -105;
 
                     if ((ret = th_vput_int(ctx, vputch, va_arg(ap, unsigned int),
                         10, padMode, padChar, width, *fmt == 'u', FALSE, sign)) == EOF)
@@ -309,7 +309,7 @@
                 case 'x':
                 case 'X':
                     if ((padMode != '0' && padMode != '-' && padMode != ' ') || prec >= 0)
-                        goto out;
+                        return -106;
 
                     if ((ret = th_vput_int(ctx, vputch, va_arg(ap, unsigned int),
                         16, padMode, padChar, width, TRUE, *fmt == 'X', FALSE)) == EOF)
@@ -322,7 +322,7 @@
 
                 case 's':
                     if ((padMode != '-' && padMode != ' ') || sign)
-                        goto out;
+                        return -108;
 
                     if ((ret = th_vput_str(ctx, vputch, va_arg(ap, char *), padMode, padChar, width, prec)) == EOF)
                         goto out;