From 619cdb6a3bf317f296d7314e12965cf9aa0558d0 Mon Sep 17 00:00:00 2001 From: Sean Barrett Date: Thu, 7 Feb 2019 07:53:28 -0800 Subject: [PATCH] stb_sprintf: fix 32 vs 64-bit sizes for format widts j/z/t --- stb_sprintf.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/stb_sprintf.h b/stb_sprintf.h index 4335a30..841dfd6 100644 --- a/stb_sprintf.h +++ b/stb_sprintf.h @@ -15,6 +15,7 @@ // Rohit Nirmal // Marcin Wojdyr // Leonard Ritter +// Stefano Zanotti // // LICENSE: // @@ -159,6 +160,7 @@ PERFORMANCE vs MSVC 2008 32-/64-bit (GCC is even slower than MSVC): #endif #include // for va_list() +#include // size_t, ptrdiff_t #ifndef STB_SPRINTF_MIN #define STB_SPRINTF_MIN 512 // how many characters per callback @@ -457,13 +459,16 @@ STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(vsprintfcb)(STBSP_SPRINTFCB *callback, break; // are we 64-bit on intmax? (c99) case 'j': - fl |= STBSP__INTMAX; + fl |= (sizeof(size_t) == 8) ? STBSP__INTMAX : 0; ++f; break; // are we 64-bit on size_t or ptrdiff_t? (c99) case 'z': + fl |= (sizeof(ptrdiff_t) == 8) ? STBSP__INTMAX : 0; + ++f; + break; case 't': - fl |= ((sizeof(char *) == 8) ? STBSP__INTMAX : 0); + fl |= (sizeof(ptrdiff_t) == 8) ? STBSP__INTMAX : 0; ++f; break; // are we 64-bit (msft style)