From aa1dd0278d419c86bef7543960dd3bf8629332f0 Mon Sep 17 00:00:00 2001 From: Tsuda Kageyu Date: Sat, 1 Aug 2015 03:02:48 +0900 Subject: [PATCH] CMake check for vsprintf_s/vsnprintf rather than sprintf_s/snprintf. --- ConfigureChecks.cmake | 16 ++++++++++------ config.h.cmake | 6 +++--- taglib/toolkit/tutils.h | 4 ++-- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 04f39548..a4a57199 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -201,26 +201,30 @@ if(NOT HAVE_GCC_BYTESWAP_16 OR NOT HAVE_GCC_BYTESWAP_32 OR NOT HAVE_GCC_BYTESWAP endif() endif() -# Determine whether your compiler supports some safer version of sprintf. +# Determine whether your compiler supports some safer version of vsprintf. check_cxx_source_compiles(" #include + #include int main() { char buf[20]; - snprintf(buf, 20, \"%d\", 1); + va_list args; + vsprintf_s(buf, \"%d\", args); return 0; } -" HAVE_SNPRINTF) +" HAVE_VSPRINTF_S) -if(NOT HAVE_SNPRINTF) +if(NOT HAVE_VSPRINTF_S) check_cxx_source_compiles(" #include + #include int main() { char buf[20]; - sprintf_s(buf, \"%d\", 1); + va_list args; + vsnprintf(buf, 20, \"%d\", args); return 0; } - " HAVE_SPRINTF_S) + " HAVE_VSNPRINTF) endif() # Check for libz using the cmake supplied FindZLIB.cmake diff --git a/config.h.cmake b/config.h.cmake index 8fd8391d..44cabfce 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -25,9 +25,9 @@ #cmakedefine HAVE_WIN_ATOMIC 1 #cmakedefine HAVE_IA64_ATOMIC 1 -/* Defined if your compiler supports some safer version of sprintf */ -#cmakedefine HAVE_SNPRINTF 1 -#cmakedefine HAVE_SPRINTF_S 1 +/* Defined if your compiler supports some safer version of vsprintf */ +#cmakedefine HAVE_VSNPRINTF 1 +#cmakedefine HAVE_VSPRINTF_S 1 /* Defined if you have libz */ #cmakedefine HAVE_ZLIB 1 diff --git a/taglib/toolkit/tutils.h b/taglib/toolkit/tutils.h index a7ed6fde..c5e0cc77 100644 --- a/taglib/toolkit/tutils.h +++ b/taglib/toolkit/tutils.h @@ -177,11 +177,11 @@ namespace TagLib char buf[BufferSize]; int length; -#if defined(HAVE_SNPRINTF) +#if defined(HAVE_VSNPRINTF) length = vsnprintf(buf, BufferSize, format, args); -#elif defined(HAVE_SPRINTF_S) +#elif defined(HAVE_VSPRINTF_S) length = vsprintf_s(buf, format, args);