* device/lib/pic16/libc/stdio/vfprintf.c,
[fw/sdcc] / device / lib / pic16 / libc / stdio / printf_tiny.c
index 906fc4c048e174b03cb8d0b30e4c483efe519e53..caa3152c372da3ca971c0ac04180377a06398fbf 100644 (file)
@@ -132,8 +132,10 @@ void printf_tiny(char *fmt, ...)
             } else {
               if(ISLONG)val = va_arg(ap, long);
               else
-              if(ISCHAR)val = va_arg(ap, char);
-              else {
+              if(ISCHAR) {
+                 val = (unsigned char)va_arg(ap, int); // FIXME: SDCC casts char arguments into ints
+                 if (!HAVESIGN) val = (char)val; // FIXME cont'd: sign-extend if required
+             } else {
                   val = va_arg(ap, int);
               }