Fixed building with Visual Studio 2013 Added SDL_vacopy.h since it needs to be included after Windows headers
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
diff --git a/src/SDL_internal.h b/src/SDL_internal.h
index 7d3f9cd..69da271 100644
--- a/src/SDL_internal.h
+++ b/src/SDL_internal.h
@@ -26,18 +26,6 @@
#define _GNU_SOURCE
#endif
-/* Do our best to make sure va_copy is working */
-#if defined(__NGAGE__)
-#undef va_copy
-#define va_copy(dst, src) dst = src
-#elif defined(_MSC_VER) && _MSC_VER <= 1800
-/* Visual Studio 2013 tries to link with _vacopy in the C runtime. Newer versions do an inline assignment */
-#undef va_copy
-#define va_copy(dst, src) dst = src
-#elif defined(__GNUC__) && (__GNUC__ < 3)
-#define va_copy(dst, src) __va_copy(dst, src)
-#endif
-
/* This is for a variable-length array at the end of a struct:
struct x { int y; char z[SDL_VARIABLE_LENGTH_ARRAY]; };
Use this because GCC 2 needs different magic than other compilers. */
diff --git a/src/SDL_log.c b/src/SDL_log.c
index a4c4d50..6f2e550 100644
--- a/src/SDL_log.c
+++ b/src/SDL_log.c
@@ -39,6 +39,9 @@
#include <android/log.h>
#endif
+#include "stdlib/SDL_vacopy.h"
+
+
/* The size of the stack buffer to use for rendering log messages. */
#define SDL_MAX_LOG_MESSAGE_STACK 256
diff --git a/src/core/linux/SDL_dbus.c b/src/core/linux/SDL_dbus.c
index 2fe1216..ecfbe6f 100644
--- a/src/core/linux/SDL_dbus.c
+++ b/src/core/linux/SDL_dbus.c
@@ -22,6 +22,7 @@
#include "SDL_hints.h"
#include "SDL_dbus.h"
#include "SDL_atomic.h"
+#include "../../stdlib/SDL_vacopy.h"
#if SDL_USE_LIBDBUS
/* we never link directly to libdbus. */
diff --git a/src/stdlib/SDL_string.c b/src/stdlib/SDL_string.c
index ae8f306..3125e83 100644
--- a/src/stdlib/SDL_string.c
+++ b/src/stdlib/SDL_string.c
@@ -27,6 +27,7 @@
/* This file contains portable string manipulation functions for SDL */
#include "SDL_stdinc.h"
+#include "SDL_vacopy.h"
#if !defined(HAVE_VSSCANF) || !defined(HAVE_STRTOL) || !defined(HAVE_STRTOUL) || !defined(HAVE_STRTOD) || !defined(HAVE_STRTOLL) || !defined(HAVE_STRTOULL)
#define SDL_isupperhex(X) (((X) >= 'A') && ((X) <= 'F'))
diff --git a/src/stdlib/SDL_vacopy.h b/src/stdlib/SDL_vacopy.h
new file mode 100644
index 0000000..ab60046
--- /dev/null
+++ b/src/stdlib/SDL_vacopy.h
@@ -0,0 +1,36 @@
+/*
+ Simple DirectMedia Layer
+ Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+*/
+
+/* Do our best to make sure va_copy is working */
+#if defined(__NGAGE__)
+#undef va_copy
+#define va_copy(dst, src) dst = src
+
+#elif defined(_MSC_VER) && _MSC_VER <= 1800
+/* Visual Studio 2013 tries to link with _vacopy in the C runtime. Newer versions do an inline assignment */
+#undef va_copy
+#define va_copy(dst, src) dst = src
+
+#elif defined(__GNUC__) && (__GNUC__ < 3)
+#define va_copy(dst, src) __va_copy(dst, src)
+#endif
+
+/* vi: set ts=4 sw=4 expandtab: */