Piotr Caban : msvcr90: Added __vswprintf_l implementation.
Alexandre Julliard
julliard at winehq.org
Tue Nov 15 13:17:33 CST 2011
Module: wine
Branch: master
Commit: 6aea3dcf25a23438d4f08b67a4c6fd97daeb0c09
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6aea3dcf25a23438d4f08b67a4c6fd97daeb0c09
Author: Piotr Caban <piotr at codeweavers.com>
Date: Tue Nov 15 14:20:49 2011 +0100
msvcr90: Added __vswprintf_l implementation.
---
dlls/msvcr100/msvcr100.spec | 2 +-
dlls/msvcr80/msvcr80.spec | 2 +-
dlls/msvcr90/msvcr90.spec | 2 +-
dlls/msvcr90/tests/msvcr90.c | 45 ++++++++++++++++++++++++++++++++++++++++++
4 files changed, 48 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 0925c1f..4b5b525 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -480,7 +480,7 @@
@ cdecl __unDNameEx(ptr str long ptr ptr ptr long) msvcrt.__unDNameEx
@ stub __unDNameHelper
@ extern __unguarded_readlc_active msvcrt.__unguarded_readlc_active
-@ stub __vswprintf_l
+@ cdecl __vswprintf_l(ptr wstr ptr ptr) msvcrt._vswprintf_l
@ extern __wargv msvcrt.__wargv
@ cdecl __wcserror(wstr) msvcrt.__wcserror
@ cdecl __wcserror_s(ptr long wstr) msvcrt.__wcserror_s
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 4cde658..5de5586 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -304,7 +304,7 @@
@ cdecl __unDNameEx(ptr str long ptr ptr ptr long) msvcrt.__unDNameEx
@ stub __unDNameHelper
@ extern __unguarded_readlc_active msvcrt.__unguarded_readlc_active
-@ stub __vswprintf_l
+@ cdecl __vswprintf_l(ptr wstr ptr ptr) msvcrt._vswprintf_l
@ extern __wargv msvcrt.__wargv
@ cdecl __wcserror(wstr) msvcrt.__wcserror
@ cdecl __wcserror_s(ptr long wstr) msvcrt.__wcserror_s
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 9d0d9e6..77e0e45 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -296,7 +296,7 @@
@ cdecl __unDNameEx(ptr str long ptr ptr ptr long) msvcrt.__unDNameEx
@ stub __unDNameHelper
@ extern __unguarded_readlc_active msvcrt.__unguarded_readlc_active
-@ stub __vswprintf_l
+@ cdecl __vswprintf_l(ptr wstr ptr ptr) msvcrt._vswprintf_l
@ extern __wargv msvcrt.__wargv
@ cdecl __wcserror(wstr) msvcrt.__wcserror
@ cdecl __wcserror_s(ptr long wstr) msvcrt.__wcserror_s
diff --git a/dlls/msvcr90/tests/msvcr90.c b/dlls/msvcr90/tests/msvcr90.c
index c3a837d..b6ae4c3 100644
--- a/dlls/msvcr90/tests/msvcr90.c
+++ b/dlls/msvcr90/tests/msvcr90.c
@@ -98,6 +98,8 @@ static int* (__cdecl *p_fpecode)(void);
static int (__cdecl *p_configthreadlocale)(int);
static void* (__cdecl *p_get_terminate)(void);
static void* (__cdecl *p_get_unexpected)(void);
+static int (__cdecl *p__vswprintf_l)(wchar_t*, const wchar_t*, _locale_t, __ms_va_list);
+static int (__cdecl *p_vswprintf_l)(wchar_t*, const wchar_t*, _locale_t, __ms_va_list);
/* type info */
@@ -264,6 +266,8 @@ static BOOL init(void)
SET(p_configthreadlocale, "_configthreadlocale");
SET(p_get_terminate, "_get_terminate");
SET(p_get_unexpected, "_get_unexpected");
+ SET(p__vswprintf_l, "__vswprintf_l");
+ SET(p_vswprintf_l, "_vswprintf_l");
if (sizeof(void *) == 8)
{
SET(p_type_info_name_internal_method, "?_name_internal_method at type_info@@QEBAPEBDPEAU__type_info_node@@@Z");
@@ -981,6 +985,46 @@ static void test_getptd(void)
ok(p_get_unexpected() == ptd->unexpected_handler, "ptd->unexpected_handler != _get_unexpected()\n");
}
+static int __cdecl __vswprintf_l_wrapper(wchar_t *buf,
+ const wchar_t *format, _locale_t locale, ...)
+{
+ int ret;
+ __ms_va_list valist;
+ __ms_va_start(valist, locale);
+ ret = p__vswprintf_l(buf, format, locale, valist);
+ __ms_va_end(valist);
+ return ret;
+}
+
+static int __cdecl _vswprintf_l_wrapper(wchar_t *buf,
+ const wchar_t *format, _locale_t locale, ...)
+{
+ int ret;
+ __ms_va_list valist;
+ __ms_va_start(valist, locale);
+ ret = p_vswprintf_l(buf, format, locale, valist);
+ __ms_va_end(valist);
+ return ret;
+}
+
+static void test__vswprintf_l(void)
+{
+ static const wchar_t format[] = {'t','e','s','t',0};
+
+ wchar_t buf[32];
+ int ret;
+
+ ret = __vswprintf_l_wrapper(buf, format, NULL);
+ ok(ret == 4, "ret = %d\n", ret);
+ ok(!memcmp(buf, format, sizeof(format)), "buf = %s, expected %s\n",
+ wine_dbgstr_w(buf), wine_dbgstr_w(format));
+
+ ret = _vswprintf_l_wrapper(buf, format, NULL);
+ ok(ret == 4, "ret = %d\n", ret);
+ ok(!memcmp(buf, format, sizeof(format)), "buf = %s, expected %s\n",
+ wine_dbgstr_w(buf), wine_dbgstr_w(format));
+}
+
START_TEST(msvcr90)
{
if(!init())
@@ -1001,4 +1045,5 @@ START_TEST(msvcr90)
test__realloc_crt();
test_typeinfo();
test_getptd();
+ test__vswprintf_l();
}
More information about the wine-cvs
mailing list