Handle the %f case in wsprintf.
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index ec8929d..e69b45a 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c
@@ -201,7 +201,10 @@ { *fmta++ = *iter; *fmta = '\0'; - sprintf(bufaiter, fmtbufa, va_arg(valist, void *)); + if (*iter == (WCHAR)L'f') + sprintf(bufaiter, fmtbufa, va_arg(valist, double)); + else + sprintf(bufaiter, fmtbufa, va_arg(valist, void *)); } while (*bufaiter) {
diff --git a/dlls/ntdll/wcstring.c b/dlls/ntdll/wcstring.c index 3effaba..50d2dbf 100644 --- a/dlls/ntdll/wcstring.c +++ b/dlls/ntdll/wcstring.c
@@ -444,7 +444,10 @@ { *fmta++ = *iter; *fmta = '\0'; - sprintf(bufaiter, fmtbufa, va_arg(valist, void *)); + if (*iter == (WCHAR)L'f') + sprintf(bufaiter, fmtbufa, va_arg(valist, double)); + else + sprintf(bufaiter, fmtbufa, va_arg(valist, void *)); } while (*bufaiter) {