From c12baad087aa21af809d660250f85956fbb4ce11 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 16 Aug 2018 10:12:17 +0200 Subject: [PATCH] Fixup compat_snprintf.c for MSVC 2008 --- libretro-common/compat/compat_snprintf.c | 14 +++++++------- libretro-common/include/compat/msvc.h | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/libretro-common/compat/compat_snprintf.c b/libretro-common/compat/compat_snprintf.c index f67301ade2..7011644280 100644 --- a/libretro-common/compat/compat_snprintf.c +++ b/libretro-common/compat/compat_snprintf.c @@ -23,10 +23,7 @@ /* THIS FILE HAS NOT BEEN VALIDATED ON PLATFORMS BESIDES MSVC */ #ifdef _MSC_VER -#include -#if _MSC_VER >= 1800 -#include /* added for _vsnprintf_s and _vscprintf on VS2015 and VS2017 */ -#endif +#include #include #if _MSC_VER < 1800 @@ -52,13 +49,16 @@ static int c89_vscprintf_retro__(const char *format, va_list pargs) int c99_vsnprintf_retro__(char *outBuf, size_t size, const char *format, va_list ap) { int count = -1; - + if (size != 0) + { #if (_MSC_VER <= 1310) - count = _vsnprintf(outBuf, size - 1, format, ap); + count = _vsnprintf(outBuf, size - 1, format, ap); #else - count = _vsnprintf_s(outBuf, size, size - 1, format, ap); + count = _vsnprintf_s(outBuf, size, size - 1, format, ap); #endif + } + if (count == -1) count = _vscprintf(format, ap); diff --git a/libretro-common/include/compat/msvc.h b/libretro-common/include/compat/msvc.h index 822c97339a..0a25cd9370 100644 --- a/libretro-common/include/compat/msvc.h +++ b/libretro-common/include/compat/msvc.h @@ -39,8 +39,8 @@ extern "C" { int c99_snprintf_retro__(char *outBuf, size_t size, const char *format, ...); #endif -/* Pre-MSVC 2010 compilers don't implement vsnprintf in a cross-platform manner? Not sure about this one. */ -#if _MSC_VER < 1600 +/* Pre-MSVC 2008 compilers don't implement vsnprintf in a cross-platform manner? Not sure about this one. */ +#if _MSC_VER < 1500 #include #include #ifndef vsnprintf