diff packages/language/c/libc/stdio/current/src/output/vfnprintf.cxx @ 1045:2c741788379c

* src/output/vfnprintf.cxx (SARG): Cast size_t to long. This seems to stop gcc from producing wrong code for the plain int clause. The wrong code causes negative numbers to be printed as positive because the sign extend from 32 bits to 64 bits is wrong.
author asl
date Tue, 10 Jun 2003 10:27:13 +0000
parents fb853432c81a
children 871b38a618f4
line wrap: on
line diff
--- a/packages/language/c/libc/stdio/current/src/output/vfnprintf.cxx
+++ b/packages/language/c/libc/stdio/current/src/output/vfnprintf.cxx
@@ -240,7 +240,7 @@ CYG_MACRO_END
         (flags&QUADINT ? va_arg(arg, cyg_int64) : \
             flags&LONGINT ? va_arg(arg, long) : \
             flags&SHORTINT ? (long)(short)va_arg(arg, int) : \
-            flags&SIZET ? va_arg(arg, size_t) : \
+            flags&SIZET ? (long)va_arg(arg, size_t) : \
             (long)va_arg(arg, int))
 #define UARG() \
         (flags&QUADINT ? va_arg(arg, cyg_uint64) : \