stb_sprintf: fix 32 vs 64-bit sizes for format widts j/z/t

This commit is contained in:
Sean Barrett 2019-02-07 07:53:28 -08:00
parent 6e7e5c5787
commit 619cdb6a3b
1 changed files with 7 additions and 2 deletions

View File

@ -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 <stdarg.h> // for va_list()
#include <stddef.h> // 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)