diff --git a/Copyright b/Copyright index b03b4b9018..73784750b5 100644 --- a/Copyright +++ b/Copyright @@ -157,7 +157,7 @@ LGPL relicensing status: osdep/android/* LGPL (BSD) osdep/ar/* LGPL (BSD) osdep/atomic.h LGPL - osdep/compiler.h easy + osdep/compiler.h LGPL osdep/endian.h easy osdep/glob-win.c LGPL osdep/io.* LGPL diff --git a/osdep/compiler.h b/osdep/compiler.h index 0edea7de4a..d25f0cd1e4 100644 --- a/osdep/compiler.h +++ b/osdep/compiler.h @@ -4,24 +4,18 @@ #define MP_EXPAND_ARGS(...) __VA_ARGS__ #ifdef __GNUC__ - +#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format(printf, a1, a2))) #define MP_NORETURN __attribute__((noreturn)) - -/** Use gcc attribute to check printf fns. a1 is the 1-based index of - * the parameter containing the format, and a2 the index of the first - * argument. **/ -#if defined(__MINGW32__) && !defined(__clang__) -// MinGW maps "printf" to the non-standard MSVCRT functions, even if -// __USE_MINGW_ANSI_STDIO is defined and set to 1. We need to use "gnu_printf", -// which isn't necessarily available on other GCC compatible compilers. -#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (gnu_printf, a1, a2))) -#else -#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (printf, a1, a2))) -#endif - #else #define PRINTF_ATTRIBUTE(a1, a2) #define MP_NORETURN #endif +// Broken crap with __USE_MINGW_ANSI_STDIO +#if defined(__MINGW32__) && defined(__GNUC__) && !defined(__clang__) +#undef PRINTF_ATTRIBUTE +#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (gnu_printf, a1, a2))) +#endif + + #endif