Piotr Caban : msvcp90: Correctly initialize vtable pointer in Getcat functions.
Alexandre Julliard
julliard at winehq.org
Fri Dec 23 13:03:23 CST 2011
Module: wine
Branch: master
Commit: 5b93bb9800c87d1cab247d57b6bc794bd4f28615
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5b93bb9800c87d1cab247d57b6bc794bd4f28615
Author: Piotr Caban <piotr at codeweavers.com>
Date: Fri Dec 23 15:29:31 2011 +0100
msvcp90: Correctly initialize vtable pointer in Getcat functions.
---
dlls/msvcp90/locale.c | 28 ++++++++++++++++++++++++----
dlls/msvcp90/msvcp90.spec | 8 ++++----
2 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c
index ad44aad..8ed46ea 100644
--- a/dlls/msvcp90/locale.c
+++ b/dlls/msvcp90/locale.c
@@ -996,8 +996,6 @@ collate* __thiscall collate_short_ctor(collate *this)
/* ?_Getcat@?$collate at _W@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z */
/* ?_Getcat@?$collate at _W@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z */
-/* ?_Getcat@?$collate at G@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z */
-/* ?_Getcat@?$collate at G@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z */
MSVCP_size_t __cdecl collate_wchar__Getcat(const locale_facet **facet, const locale *loc)
{
TRACE("(%p %p)\n", facet, loc);
@@ -1016,6 +1014,18 @@ MSVCP_size_t __cdecl collate_wchar__Getcat(const locale_facet **facet, const loc
return LC_COLLATE;
}
+/* ?_Getcat@?$collate at G@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z */
+/* ?_Getcat@?$collate at G@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z */
+MSVCP_size_t __cdecl collate_short__Getcat(const locale_facet **facet, const locale *loc)
+{
+ if(facet && !*facet) {
+ collate_wchar__Getcat(facet, loc);
+ (*(locale_facet**)facet)->vtable = &MSVCP_collate_short_vtable;
+ }
+
+ return LC_COLLATE;
+}
+
/* _Wcscoll */
int __cdecl _Wcscoll(const wchar_t *first1, const wchar_t *last1, const wchar_t *first2,
const wchar_t *last2, const _Collvec *coll)
@@ -2142,8 +2152,6 @@ const char* __thiscall ctype_wchar__Widen_s(const ctype_wchar *this,
/* ?_Getcat@?$ctype at _W@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z */
/* ?_Getcat@?$ctype at _W@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z */
-/* ?_Getcat@?$ctype at G@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z */
-/* ?_Getcat@?$ctype at G@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z */
MSVCP_size_t __cdecl ctype_wchar__Getcat(const locale_facet **facet, const locale *loc)
{
TRACE("(%p %p)\n", facet, loc);
@@ -2166,6 +2174,18 @@ MSVCP_size_t __cdecl ctype_wchar__Getcat(const locale_facet **facet, const local
return LC_CTYPE;
}
+/* ?_Getcat@?$ctype at G@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z */
+/* ?_Getcat@?$ctype at G@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z */
+MSVCP_size_t __cdecl ctype_short__Getcat(const locale_facet **facet, const locale *loc)
+{
+ if(facet && !*facet) {
+ ctype_wchar__Getcat(facet, loc);
+ (*(locale_facet**)facet)->vtable = &MSVCP_ctype_short_vtable;
+ }
+
+ return LC_CTYPE;
+}
+
/* _Towlower */
wchar_t __cdecl _Towlower(wchar_t ch, const _Ctypevec *ctype)
{
diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec
index 750e279..292e91c 100644
--- a/dlls/msvcp90/msvcp90.spec
+++ b/dlls/msvcp90/msvcp90.spec
@@ -2229,14 +2229,14 @@
@ stub -arch=win64 ?_Getcat@?$codecvt at _WDH@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z
@ cdecl -arch=win32 ?_Getcat@?$collate at D@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) collate_char__Getcat
@ cdecl -arch=win64 ?_Getcat@?$collate at D@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z(ptr ptr) collate_char__Getcat
-@ cdecl -arch=win32 ?_Getcat@?$collate at G@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) collate_wchar__Getcat
-@ cdecl -arch=win64 ?_Getcat@?$collate at G@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z(ptr ptr) collate_wchar__Getcat
+@ cdecl -arch=win32 ?_Getcat@?$collate at G@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) collate_short__Getcat
+@ cdecl -arch=win64 ?_Getcat@?$collate at G@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z(ptr ptr) collate_short__Getcat
@ cdecl -arch=win32 ?_Getcat@?$collate at _W@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) collate_wchar__Getcat
@ cdecl -arch=win64 ?_Getcat@?$collate at _W@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z(ptr ptr) collate_wchar__Getcat
@ cdecl -arch=win32 ?_Getcat@?$ctype at D@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) ctype_char__Getcat
@ cdecl -arch=win64 ?_Getcat@?$ctype at D@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z(ptr ptr) ctype_char__Getcat
-@ cdecl -arch=win32 ?_Getcat@?$ctype at G@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) ctype_wchar__Getcat
-@ cdecl -arch=win64 ?_Getcat@?$ctype at G@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z(ptr ptr) ctype_wchar__Getcat
+@ cdecl -arch=win32 ?_Getcat@?$ctype at G@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) ctype_short__Getcat
+@ cdecl -arch=win64 ?_Getcat@?$ctype at G@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z(ptr ptr) ctype_short__Getcat
@ cdecl -arch=win32 ?_Getcat@?$ctype at _W@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) ctype_wchar__Getcat
@ cdecl -arch=win64 ?_Getcat@?$ctype at _W@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z(ptr ptr) ctype_wchar__Getcat
@ stub -arch=win32 ?_Getcat@?$messages at D@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z
More information about the wine-cvs
mailing list