From cff825f7fe1e7adb32cef4852ab17ab4e3174441 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Sat, 30 May 2015 04:41:23 -0400 Subject: [PATCH] Added JUPITER_VSCWPRINTF macro; replaced some vswprintf() calls as appropriate. --- Jupiter/CString_Imp.h | 6 ++++-- Jupiter/String_Imp.h | 10 ++++++---- Release/Jupiter.lib | Bin 267778 -> 267778 bytes 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Jupiter/CString_Imp.h b/Jupiter/CString_Imp.h index efcd5ff..b50f304 100644 --- a/Jupiter/CString_Imp.h +++ b/Jupiter/CString_Imp.h @@ -42,8 +42,10 @@ #if defined _WIN32 #define JUPITER_VSCPRINTF(format, format_args) _vscprintf(format, format_args) +#define JUPITER_VSCWPRINTF(format, format_args) _vscwprintf(format, format_args) #else // _WIN32 #define JUPITER_VSCPRINTF(format, format_args) vsnprintf(nullptr, 0, format, format_args) +#define JUPITER_VSCWPRINTF(format, format_args) vswprintf(nullptr, 0, format, format_args) #endif // _WIN32 #endif // JUPITER_VSCPRINTF @@ -166,7 +168,7 @@ template<> size_t inline Jupiter::CString_Type::vformat(const wchar_t * int minLen; va_list sargs; va_copy(sargs, args); - minLen = vswprintf(nullptr, 0, format, sargs); + minLen = JUPITER_VSCWPRINTF(format, sargs); va_end(sargs); if (minLen < 0) return 0; // We simply can not work with this. this->setBufferSizeNoCopy(minLen); @@ -205,7 +207,7 @@ template<> size_t inline Jupiter::CString_Type::avformat(const wchar_t int minLen; va_list sargs; va_copy(sargs, args); - minLen = vswprintf(nullptr, 0, format, sargs); + minLen = JUPITER_VSCWPRINTF(format, sargs); va_end(sargs); if (minLen < 0) return 0; // We simply can not work with this. this->setBufferSize(minLen + Jupiter::String_Type::length); diff --git a/Jupiter/String_Imp.h b/Jupiter/String_Imp.h index 7e093a9..4f10b88 100644 --- a/Jupiter/String_Imp.h +++ b/Jupiter/String_Imp.h @@ -41,8 +41,10 @@ #if defined _WIN32 #define JUPITER_VSCPRINTF(format, format_args) _vscprintf(format, format_args) +#define JUPITER_VSCWPRINTF(format, format_args) _vscwprintf(format, format_args) #else // _WIN32 #define JUPITER_VSCPRINTF(format, format_args) vsnprintf(nullptr, 0, format, format_args) +#define JUPITER_VSCWPRINTF(format, format_args) vswprintf(nullptr, 0, format, format_args) #endif // _WIN32 #endif // JUPITER_VSCPRINTF @@ -125,7 +127,7 @@ template<> size_t inline Jupiter::String_Strict::vformat(const wchar_t int minLen; va_list sargs; va_copy(sargs, args); - minLen = vswprintf(nullptr, 0, format, sargs); + minLen = JUPITER_VSCWPRINTF(format, sargs); va_end(sargs); if (minLen < 0) return 0; // We simply can not work with this. @@ -163,7 +165,7 @@ template<> size_t inline Jupiter::String_Strict::avformat(const wchar_t int minLen; va_list sargs; va_copy(sargs, args); - minLen = vswprintf(nullptr, 0, format, sargs); + minLen = JUPITER_VSCWPRINTF(format, sargs); va_end(sargs); if (minLen < 0) return 0; // We simply can not work with this. this->setBufferSize(minLen + Jupiter::String_Type::length + 1); // vsnprintf REQUIRES space for an additional null character. @@ -415,7 +417,7 @@ template<> size_t inline Jupiter::String_Loose::vformat(const wchar_t * int minLen; va_list sargs; va_copy(sargs, args); - minLen = vswprintf(nullptr, 0, format, sargs); + minLen = JUPITER_VSCWPRINTF(format, sargs); va_end(sargs); if (minLen < 0) return 0; // We simply can not work with this. @@ -453,7 +455,7 @@ template<> size_t inline Jupiter::String_Loose::avformat(const wchar_t int minLen; va_list sargs; va_copy(sargs, args); - minLen = vswprintf(nullptr, 0, format, sargs); + minLen = JUPITER_VSCWPRINTF(format, sargs); va_end(sargs); if (minLen < 0) return 0; // We simply can not work with this. this->setBufferSize(minLen + Jupiter::String_Type::length + 1); // vsnprintf REQUIRES space for an additional null character. diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index f3edbf68f3d5756d5a688f8c7ed39ff3dee06963..b068dac69af9a09507747bb9e4504364aa6cf762 100644 GIT binary patch delta 17365 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 Pt%1`hqW-c5o~Hi`TNn3F delta 17371 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 MjUwtVZQyD8UqtbcS^xk5