* device/lib/pic16/libc/stdio/vfprintf.c,
[fw/sdcc] / device / lib / pic16 / libc / stdio / vfprintf.c
index 706d9704001ad9d8bf18566f3ed366d414b0bf4c..7a296920ddee1e618b41937e53298c86d75c3f3e 100644 (file)
@@ -138,7 +138,8 @@ unsigned int vfprintf(FILE *stream, char *fmt, va_list ap)
 #endif
         }
         else if(fchar) {
-          val = va_arg(ap, char);
+          val = (unsigned char)va_arg(ap, int); // FIXME: SDCC passes 1-byte char varargs as 2-byte ints...
+         if (!nosign) val = (char) val; // (FIXME cont'd) sign extend if required
 #if _DEBUG
           io_long(val);
 #endif