Workaround snprintf() deficiencies on Visual Studio.
This commit is contained in:
parent
c057f2d7dd
commit
cf11d2ec99
28
src/physfs.c
28
src/physfs.c
|
@ -2983,5 +2983,33 @@ static void setDefaultAllocator(void)
|
|||
} /* if */
|
||||
} /* setDefaultAllocator */
|
||||
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
/* this code came from https://stackoverflow.com/a/8712996 */
|
||||
int __PHYSFS_msvc_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap)
|
||||
{
|
||||
int count = -1;
|
||||
|
||||
if (size != 0)
|
||||
count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap);
|
||||
if (count == -1)
|
||||
count = _vscprintf(format, ap);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
int __PHYSFS_msvc_snprintf(char *outBuf, size_t size, const char *format, ...)
|
||||
{
|
||||
int count;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, format);
|
||||
count = c99_vsnprintf(outBuf, size, format, ap);
|
||||
va_end(ap);
|
||||
|
||||
return count;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* end of physfs.c ... */
|
||||
|
||||
|
|
|
@ -57,6 +57,15 @@ extern "C" {
|
|||
#define _FILE_OFFSET_BITS 64
|
||||
#endif
|
||||
|
||||
/* a real C99-compliant snprintf() is in Visual Studio 2015,
|
||||
but just use this everywhere for binary compatibility. */
|
||||
#if defined(_MSC_VER)
|
||||
int __PHYSFS_msvc_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap);
|
||||
int __PHYSFS_msvc_snprintf(char *outBuf, size_t size, const char *format, ...);
|
||||
#define vsnprintf __PHYSFS_msvc_vsnprintf
|
||||
#define snprintf __PHYSFS_msvc_snprintf
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Interface for small allocations. If you need a little scratch space for
|
||||
* a throwaway buffer or string, use this. It will make small allocations
|
||||
|
|
Loading…
Reference in New Issue