Piotr Caban : msvcp90: Correctly initialize vtable pointer in Getcat functions.
Module: wine Branch: master Commit: 5b93bb9800c87d1cab247d57b6bc794bd4f28615 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5b93bb9800c87d1cab247d57b6... Author: Piotr Caban <piotr(a)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(a)_W@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z */ /* ?_Getcat@?$collate(a)_W@std@@SA_KPEAPEBVfacet(a)locale@2(a)PEBV42@@Z */ -/* ?_Getcat@?$collate(a)G@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z */ -/* ?_Getcat@?$collate(a)G@std@@SA_KPEAPEBVfacet(a)locale@2(a)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(a)G@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z */ +/* ?_Getcat@?$collate(a)G@std@@SA_KPEAPEBVfacet(a)locale@2(a)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(a)_W@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z */ /* ?_Getcat@?$ctype(a)_W@std@@SA_KPEAPEBVfacet(a)locale@2(a)PEBV42@@Z */ -/* ?_Getcat@?$ctype(a)G@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z */ -/* ?_Getcat@?$ctype(a)G@std@@SA_KPEAPEBVfacet(a)locale@2(a)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(a)G@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z */ +/* ?_Getcat@?$ctype(a)G@std@@SA_KPEAPEBVfacet(a)locale@2(a)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(a)_WDH@std@@SA_KPEAPEBVfacet(a)locale@2(a)PEBV42@@Z @ cdecl -arch=win32 ?_Getcat@?$collate(a)D@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z(ptr ptr) collate_char__Getcat @ cdecl -arch=win64 ?_Getcat@?$collate(a)D@std@@SA_KPEAPEBVfacet(a)locale@2(a)PEBV42@@Z(ptr ptr) collate_char__Getcat -@ cdecl -arch=win32 ?_Getcat@?$collate(a)G@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z(ptr ptr) collate_wchar__Getcat -@ cdecl -arch=win64 ?_Getcat@?$collate(a)G@std@@SA_KPEAPEBVfacet(a)locale@2(a)PEBV42@@Z(ptr ptr) collate_wchar__Getcat +@ cdecl -arch=win32 ?_Getcat@?$collate(a)G@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z(ptr ptr) collate_short__Getcat +@ cdecl -arch=win64 ?_Getcat@?$collate(a)G@std@@SA_KPEAPEBVfacet(a)locale@2(a)PEBV42@@Z(ptr ptr) collate_short__Getcat @ cdecl -arch=win32 ?_Getcat@?$collate(a)_W@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z(ptr ptr) collate_wchar__Getcat @ cdecl -arch=win64 ?_Getcat@?$collate(a)_W@std@@SA_KPEAPEBVfacet(a)locale@2(a)PEBV42@@Z(ptr ptr) collate_wchar__Getcat @ cdecl -arch=win32 ?_Getcat@?$ctype(a)D@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z(ptr ptr) ctype_char__Getcat @ cdecl -arch=win64 ?_Getcat@?$ctype(a)D@std@@SA_KPEAPEBVfacet(a)locale@2(a)PEBV42@@Z(ptr ptr) ctype_char__Getcat -@ cdecl -arch=win32 ?_Getcat@?$ctype(a)G@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z(ptr ptr) ctype_wchar__Getcat -@ cdecl -arch=win64 ?_Getcat@?$ctype(a)G@std@@SA_KPEAPEBVfacet(a)locale@2(a)PEBV42@@Z(ptr ptr) ctype_wchar__Getcat +@ cdecl -arch=win32 ?_Getcat@?$ctype(a)G@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z(ptr ptr) ctype_short__Getcat +@ cdecl -arch=win64 ?_Getcat@?$ctype(a)G@std@@SA_KPEAPEBVfacet(a)locale@2(a)PEBV42@@Z(ptr ptr) ctype_short__Getcat @ cdecl -arch=win32 ?_Getcat@?$ctype(a)_W@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z(ptr ptr) ctype_wchar__Getcat @ cdecl -arch=win64 ?_Getcat@?$ctype(a)_W@std@@SA_KPEAPEBVfacet(a)locale@2(a)PEBV42@@Z(ptr ptr) ctype_wchar__Getcat @ stub -arch=win32 ?_Getcat@?$messages(a)D@std@@SAIPAPBVfacet(a)locale@2(a)PBV42@@Z
participants (1)
-
Alexandre Julliard