+#if defined(__MINGW32__) && !defined(HAVE__VSCPRINTF)
+int _vscprintf(const char *fmt, va_list ap)
+{
+ static int (*fp_vscprintf)(const char *, va_list) = 0;
+ if (!fp_vscprintf) {
+ HANDLE h = GetModuleHandleA("msvcrt.dll");
+ FARPROC fp = GetProcAddress(h, "_vscprintf");
+ InterlockedCompareExchangePointer(&fp_vscprintf, fp, 0);
+ }
+ assert(fp_vscprintf);
+ return fp_vscprintf(fmt, ap);
+}
+#endif
+