From 8be081fbbe1bb89c138db50209b0af06e877dc55 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sun, 6 Nov 2022 10:12:22 -0800 Subject: [PATCH] Fix Xcode 14 sprintf deprecation warning We use snprintf when stdc is set to C++11, however in C++98 mode we can't use variadic macros, and Xcode 14 complains about the use of sprintf. It should be safe however to use variadic macros on any remotely recent version of clang on Apple, unless -pedantic is defined which warns against the use of variadic macros in C++98 mode... This change fixes the problem for the builds that don't specify -pedantic, which is a problem for another day. --- src/pugixml.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pugixml.cpp b/src/pugixml.cpp index c63645b..4e72afe 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -143,6 +143,8 @@ using std::memset; # define PUGI__SNPRINTF(buf, ...) snprintf(buf, sizeof(buf), __VA_ARGS__) #elif defined(PUGI__MSVC_CRT_VERSION) && PUGI__MSVC_CRT_VERSION >= 1400 # define PUGI__SNPRINTF(buf, ...) _snprintf_s(buf, _countof(buf), _TRUNCATE, __VA_ARGS__) +#elif defined(__APPLE__) && __clang_major__ >= 14 && !defined(__STRICT_ANSI__) // Xcode 14 marks snprintf as deprecated while still using C++98 by default +# define PUGI__SNPRINTF(buf, ...) snprintf(buf, sizeof(buf), __VA_ARGS__) #else # define PUGI__SNPRINTF sprintf #endif