diff --git a/configure.ac b/configure.ac
index 592bc90ec35383fbc00c749b7a22ac3b42cd99b8..280ed5f4dde122d517142ce542098e48c66cd69f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -453,6 +453,24 @@ AM_ICONV
 VLC_ADD_CFLAGS([libvlc],[${INCICONV}])
 VLC_ADD_LIBS([libvlc],[${LTLIBICONV}])
 
+dnl Check for broken versions of mingw-runtime compatability library
+if test "${SYS}" = "mingw32"
+then
+    AC_MSG_CHECKING(for broken mingw-runtime)
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <_mingw.h>
+#if (__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 14)
+# error Attempting to use mingw-runtime with broken vsnprintf support
+#endif
+        ]])],
+        [AC_MSG_RESULT([Ok])],
+        [AC_MSG_ERROR([Broken mingw-runtime, need > 3.13])],
+])
+    dnl force use of mingw provided c99 *printf over msvcrt
+    CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
+    CPPFLAGS_save="${CPPFLAGS_save} -D__USE_MINGW_ANSI_STDIO=1"
+fi
+
 dnl Check for the need to include the mingwex lib for mingw32
 if test "${SYS}" = "mingw32"
 then
diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h
index 15172b22671df3b68fefe88dfe4438c03f89fc62..0294c3d76717196ecfedc8e1be3cd746357b1e4e 100644
--- a/include/vlc_fixups.h
+++ b/include/vlc_fixups.h
@@ -26,6 +26,19 @@
 #ifndef LIBVLC_FIXUPS_H
 # define LIBVLC_FIXUPS_H 1
 
+#ifdef __MINGW32_VERSION
+# if __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 14
+#  error This mingw-runtime is too old, it has a broken vsnprintf
+# endif
+/* mingw-runtime provides the whole printf family in a c99 compliant way. */
+/* the way to enable this is to define __USE_MINGW_ANSI_STDIO, or something
+ * such as _ISOC99_SOURCE; the former is done by configure.ac */
+/* This isn't done here, since some modules don't include config.h and
+ * therefore this as the first include file */
+#elif defined UNDER_CE
+# error Window CE support for *printf needs fixing.
+#endif
+
 #ifndef HAVE_STRDUP
 # include <string.h>
 # include <stdlib.h>