From 51997464083b02e3f77dec378aaa90fd23116e19 Mon Sep 17 00:00:00 2001 From: Sektor van Skijlen Date: Mon, 27 May 2024 23:10:09 +0200 Subject: [PATCH] Added extra version of snprintf for old Windows --- srtcore/sfmt.h | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/srtcore/sfmt.h b/srtcore/sfmt.h index 61bbd8914..cb64b90f5 100644 --- a/srtcore/sfmt.h +++ b/srtcore/sfmt.h @@ -617,18 +617,24 @@ class obufstream namespace internal { +#if defined(_MSC_VER) && _MSC_VER < 1900 +#define FMT_SYM_SNPRINTF _snprintf +#define FMT_SIZE_SNPRINTF(bufsize) (bufsize-1) +#else +#define FMT_SYM_SNPRINTF std::snprintf +#define FMT_SIZE_SNPRINTF(bufsize) bufsize +#endif + template static inline size_t SNPrintfOne(char* buf, size_t bufsize, const char* fmt, const ValueType& val) -{ - return std::snprintf(buf, bufsize, fmt, val); -} - +{ return FMT_SYM_SNPRINTF (buf, FMT_SIZE_SNPRINTF(bufsize), fmt, val); } static inline size_t SNPrintfOne(char* buf, size_t bufsize, const char* fmt, const std::string& val) -{ - return std::snprintf(buf, bufsize, fmt, val.c_str()); -} +{ return FMT_SYM_SNPRINTF(buf, FMT_SIZE_SNPRINTF(bufsize), fmt, val.c_str()); } + } +#undef FMT_SYM_SNPRINTF +#undef FMT_SIZE_SNPRINTF template inline internal::form_memory_buffer<> sfmt(const Value& val, const char* fmtspec = 0)