Fix the format specifier for Int64/Word64 on Windows
authorIan Lynagh <igloo@earth.li>
Sat, 27 Mar 2010 18:21:26 +0000 (18:21 +0000)
committerIan Lynagh <igloo@earth.li>
Sat, 27 Mar 2010 18:21:26 +0000 (18:21 +0000)
mingw doesn't understand %llu/%lld - it treats them as 32-bit rather
than 64-bit. We use %I64u/%I64d instead.

includes/Rts.h

index 1bfb37a..3318402 100644 (file)
@@ -143,9 +143,16 @@ void _assertFail(const char *filename, unsigned int linenum)
 #define FMT_Word64 "lu"
 #define FMT_Int64  "ld"
 #else
+#if defined(mingw32_HOST_OS)
+/* mingw doesn't understand %llu/%lld - it treats them as 32-bit
+   rather than 64-bit */
+#define FMT_Word64 "I64u"
+#define FMT_Int64  "I64d"
+#else
 #define FMT_Word64 "llu"
 #define FMT_Int64  "lld"
 #endif
+#endif
 
 /* -----------------------------------------------------------------------------
    Include everything STG-ish