diff --git a/dlls/msvcp90/memory.c b/dlls/msvcp90/memory.c index 29fd9ba8c34..998130bd8a9 100644 --- a/dlls/msvcp90/memory.c +++ b/dlls/msvcp90/memory.c @@ -213,3 +213,102 @@ size_t __stdcall MSVCP_allocator_wchar_max_size(void *this) { return UINT_MAX/sizeof(wchar_t); } + +/* allocator */ +/* ?address@?$allocator@G@std@@QBEPAGAAG@Z */ +/* ?address@?$allocator@G@std@@QEBAPEAGAEAG@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_allocator_short_address, 8) +unsigned short* __stdcall MSVCP_allocator_short_address( + void *this, unsigned short *ptr) +{ + return ptr; +} + +/* ?address@?$allocator@G@std@@QBEPBGABG@Z */ +/* ?address@?$allocator@G@std@@QEBAPEBGAEBG@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_allocator_short_const_address, 8) +const unsigned short* __stdcall MSVCP_allocator_short_const_address( + void *this, const unsigned short *ptr) +{ + return ptr; +} + +/* ??0?$allocator@G@std@@QAE@XZ */ +/* ??0?$allocator@G@std@@QEAA@XZ */ +DEFINE_THISCALL_WRAPPER(MSVCP_allocator_short_ctor, 4) +void* __stdcall MSVCP_allocator_short_ctor(void *this) +{ + return this; +} + +/* ??0?$allocator@G@std@@QAE@ABV01@@Z */ +/* ??0?$allocator@G@std@@QEAA@AEBV01@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_allocator_short_copy_ctor, 8) +void* __stdcall MSVCP_allocator_short_copy_ctor(void *this, void *copy) +{ + return this; +} + +/* ??4?$allocator@G@std@@QAEAAV01@ABV01@@Z */ +/* ??4?$allocator@G@std@@QEAAAEAV01@AEBV01@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_allocator_short_assign, 8) +void* __stdcall MSVCP_allocator_short_assign(void *this, void *assign) +{ + return this; +} + +/* ?deallocate@?$allocator@G@std@@QAEXPAGI@Z */ +/* ?deallocate@?$allocator@G@std@@QEAAXPEAG_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_allocator_short_deallocate, 12) +void __stdcall MSVCP_allocator_short_deallocate(void *this, + unsigned short *ptr, size_t size) +{ + MSVCRT_operator_delete(ptr); +} + +/* ?allocate@?$allocator@G@std@@QAEPAGI@Z */ +/* ?allocate@?$allocator@G@std@@QEAAPEAG_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_allocator_short_allocate, 8) +unsigned short* __stdcall MSVCP_allocator_short_allocate( + void *this, size_t count) +{ + if(UINT_MAX/count < sizeof(unsigned short)) { + throw_exception(EXCEPTION_BAD_ALLOC, NULL); + return NULL; + } + + return MSVCRT_operator_new(sizeof(unsigned short[count])); +} + +/* ?allocate@?$allocator@G@std@@QAEPAGIPBX@Z */ +/* ?allocate@?$allocator@G@std@@QEAAPEAG_KPEBX@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_allocator_short_allocate_hint, 12) +unsigned short* __stdcall MSVCP_allocator_short_allocate_hint( + void *this, size_t count, const void *hint) +{ + return MSVCP_allocator_short_allocate(this, count); +} + +/* ?construct@?$allocator@G@std@@QAEXPAGABG@Z */ +/* ?construct@?$allocator@G@std@@QEAAXPEAGAEBG@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_allocator_short_construct, 12) +void __stdcall MSVCP_allocator_short_construct(void *this, + unsigned short *ptr, unsigned short *val) +{ + *ptr = *val; +} + +/* ?destroy@?$allocator@G@std@@QAEXPAG@Z */ +/* ?destroy@?$allocator@G@std@@QEAAXPEAG@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_allocator_short_destroy, 8) +void __stdcall MSVCP_allocator_short_destroy(void *this, size_t *ptr) +{ +} + +/* ?max_size@?$allocator@G@std@@QBEIXZ */ +/* ?max_size@?$allocator@G@std@@QEBA_KXZ */ +DEFINE_THISCALL_WRAPPER(MSVCP_allocator_short_max_size, 4) +size_t __stdcall MSVCP_allocator_short_max_size(void *this) +{ + return UINT_MAX/sizeof(unsigned short); +} diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index 513b5e3a254..8e96c5dd129 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -534,10 +534,10 @@ @ cdecl -arch=win64 ??0?$allocator@D@std@@QEAA@AEBV01@@Z(ptr ptr) MSVCP_allocator_char_copy_ctor @ cdecl -arch=win32 -i386 -norelay ??0?$allocator@D@std@@QAE@XZ() __thiscall_MSVCP_allocator_char_ctor @ cdecl -arch=win64 ??0?$allocator@D@std@@QEAA@XZ(ptr) MSVCP_allocator_char_ctor -@ stub -arch=win32 ??0?$allocator@G@std@@QAE@ABV01@@Z -@ stub -arch=win64 ??0?$allocator@G@std@@QEAA@AEBV01@@Z -@ stub -arch=win32 ??0?$allocator@G@std@@QAE@XZ -@ stub -arch=win64 ??0?$allocator@G@std@@QEAA@XZ +@ cdecl -arch=win32 -i386 -norelay ??0?$allocator@G@std@@QAE@ABV01@@Z(ptr) __thiscall_MSVCP_allocator_short_copy_ctor +@ cdecl -arch=win64 ??0?$allocator@G@std@@QEAA@AEBV01@@Z(ptr ptr) MSVCP_allocator_short_copy_ctor +@ cdecl -arch=win32 -i386 -norelay ??0?$allocator@G@std@@QAE@XZ() __thiscall_MSVCP_allocator_short_ctor +@ cdecl -arch=win64 ??0?$allocator@G@std@@QEAA@XZ(ptr) MSVCP_allocator_short_ctor @ stub -arch=win32 ??0?$allocator@X@std@@QAE@ABV01@@Z @ stub -arch=win64 ??0?$allocator@X@std@@QEAA@AEBV01@@Z @ stub -arch=win32 ??0?$allocator@X@std@@QAE@XZ @@ -1374,8 +1374,8 @@ @ stub -arch=win64 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z @ cdecl -arch=win32 -i386 -norelay ??4?$allocator@D@std@@QAEAAV01@ABV01@@Z(ptr) __thiscall_MSVCP_allocator_char_assign @ cdecl -arch=win64 ??4?$allocator@D@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) MSVCP_allocator_char_assign -@ stub -arch=win32 ??4?$allocator@G@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$allocator@G@std@@QEAAAEAV01@AEBV01@@Z +@ cdecl -arch=win32 -i386 -norelay ??4?$allocator@G@std@@QAEAAV01@ABV01@@Z(ptr) __thiscall_MSVCP_allocator_short_assign +@ cdecl -arch=win64 ??4?$allocator@G@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) MSVCP_allocator_short_assign @ stub -arch=win32 ??4?$allocator@X@std@@QAEAAV01@ABV01@@Z @ stub -arch=win64 ??4?$allocator@X@std@@QEAAAEAV01@AEBV01@@Z @ cdecl -arch=win32 -i386 -norelay ??4?$allocator@_W@std@@QAEAAV01@ABV01@@Z(ptr) __thiscall_MSVCP_allocator_wchar_assign @@ -2894,10 +2894,10 @@ @ cdecl -arch=win64 ?address@?$allocator@D@std@@QEBAPEADAEAD@Z(ptr ptr) MSVCP_allocator_char_address @ cdecl -arch=win32 -i386 -norelay ?address@?$allocator@D@std@@QBEPBDABD@Z(ptr) __thiscall_MSVCP_allocator_char_const_address @ cdecl -arch=win64 ?address@?$allocator@D@std@@QEBAPEBDAEBD@Z(ptr ptr) MSVCP_allocator_char_const_address -@ stub -arch=win32 ?address@?$allocator@G@std@@QBEPAGAAG@Z -@ stub -arch=win64 ?address@?$allocator@G@std@@QEBAPEAGAEAG@Z -@ stub -arch=win32 ?address@?$allocator@G@std@@QBEPBGABG@Z -@ stub -arch=win64 ?address@?$allocator@G@std@@QEBAPEBGAEBG@Z +@ cdecl -arch=win32 -i386 -norelay ?address@?$allocator@G@std@@QBEPAGAAG@Z(ptr) __thiscall_MSVCP_allocator_short_address +@ cdecl -arch=win64 ?address@?$allocator@G@std@@QEBAPEAGAEAG@Z(ptr ptr) MSVCP_allocator_short_address +@ cdecl -arch=win32 -i386 -norelay ?address@?$allocator@G@std@@QBEPBGABG@Z(ptr) __thiscall_MSVCP_allocator_short_const_address +@ cdecl -arch=win64 ?address@?$allocator@G@std@@QEBAPEBGAEBG@Z(ptr ptr) MSVCP_allocator_short_const_address @ cdecl -arch=win32 -i386 -norelay ?address@?$allocator@_W@std@@QBEPA_WAA_W@Z(ptr) __thiscall_MSVCP_allocator_wchar_address @ cdecl -arch=win64 ?address@?$allocator@_W@std@@QEBAPEA_WAEA_W@Z(ptr ptr) MSVCP_allocator_wchar_address @ cdecl -arch=win32 -i386 -norelay ?address@?$allocator@_W@std@@QBEPB_WAB_W@Z(ptr) __thiscall_MSVCP_allocator_wchar_const_address @@ -2906,10 +2906,10 @@ @ cdecl -arch=win64 ?allocate@?$allocator@D@std@@QEAAPEAD_K@Z(ptr long) MSVCP_allocator_char_allocate @ cdecl -arch=win32 -i386 -norelay ?allocate@?$allocator@D@std@@QAEPADIPBX@Z(long ptr) __thiscall_MSVCP_allocator_char_allocate_hint @ cdecl -arch=win64 ?allocate@?$allocator@D@std@@QEAAPEAD_KPEBX@Z(ptr long ptr) MSVCP_allocator_char_allocate_hint -@ stub -arch=win32 ?allocate@?$allocator@G@std@@QAEPAGI@Z -@ stub -arch=win64 ?allocate@?$allocator@G@std@@QEAAPEAG_K@Z -@ stub -arch=win32 ?allocate@?$allocator@G@std@@QAEPAGIPBX@Z -@ stub -arch=win64 ?allocate@?$allocator@G@std@@QEAAPEAG_KPEBX@Z +@ cdecl -arch=win32 -i386 -norelay ?allocate@?$allocator@G@std@@QAEPAGI@Z(long) __thiscall_MSVCP_allocator_short_allocate +@ cdecl -arch=win64 ?allocate@?$allocator@G@std@@QEAAPEAG_K@Z(ptr long) MSVCP_allocator_short_allocate +@ cdecl -arch=win32 -i386 -norelay ?allocate@?$allocator@G@std@@QAEPAGIPBX@Z(long ptr) __thiscall_MSVCP_allocator_short_allocate_hint +@ cdecl -arch=win64 ?allocate@?$allocator@G@std@@QEAAPEAG_KPEBX@Z(ptr long ptr) MSVCP_allocator_short_allocate_hint @ cdecl -arch=win32 -i386 -norelay ?allocate@?$allocator@_W@std@@QAEPA_WI@Z(long) __thiscall_MSVCP_allocator_wchar_allocate @ cdecl -arch=win64 ?allocate@?$allocator@_W@std@@QEAAPEA_W_K@Z(ptr long) MSVCP_allocator_wchar_allocate @ cdecl -arch=win32 -i386 -norelay ?allocate@?$allocator@_W@std@@QAEPA_WIPBX@Z(long ptr) __thiscall_MSVCP_allocator_wchar_allocate_hint @@ -3164,8 +3164,8 @@ @ stub -arch=win64 ?compare@?$collate@_W@std@@QEBAHPEB_W000@Z @ cdecl -arch=win32 -i386 -norelay ?construct@?$allocator@D@std@@QAEXPADABD@Z(ptr ptr) __thiscall_MSVCP_allocator_char_construct @ cdecl -arch=win64 ?construct@?$allocator@D@std@@QEAAXPEADAEBD@Z(ptr ptr ptr) MSVCP_allocator_char_construct -@ stub -arch=win32 ?construct@?$allocator@G@std@@QAEXPAGABG@Z -@ stub -arch=win64 ?construct@?$allocator@G@std@@QEAAXPEAGAEBG@Z +@ cdecl -arch=win32 -i386 -norelay ?construct@?$allocator@G@std@@QAEXPAGABG@Z(ptr ptr) __thiscall_MSVCP_allocator_short_construct +@ cdecl -arch=win64 ?construct@?$allocator@G@std@@QEAAXPEAGAEBG@Z(ptr ptr ptr) MSVCP_allocator_short_construct @ cdecl -arch=win32 -i386 -norelay ?construct@?$allocator@_W@std@@QAEXPA_WAB_W@Z(ptr ptr) __thiscall_MSVCP_allocator_wchar_construct @ cdecl -arch=win64 ?construct@?$allocator@_W@std@@QEAAXPEA_WAEB_W@Z(ptr ptr ptr) MSVCP_allocator_wchar_construct @ stub -arch=win32 ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADII@Z @@ -3212,8 +3212,8 @@ @ stub -arch=win64 ?date_order@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AW4dateorder@time_base@2@XZ @ cdecl -arch=win32 -i386 -norelay ?deallocate@?$allocator@D@std@@QAEXPADI@Z(ptr long) __thiscall_MSVCP_allocator_char_deallocate @ cdecl -arch=win64 ?deallocate@?$allocator@D@std@@QEAAXPEAD_K@Z(ptr ptr long) MSVCP_allocator_char_deallocate -@ stub -arch=win32 ?deallocate@?$allocator@G@std@@QAEXPAGI@Z -@ stub -arch=win64 ?deallocate@?$allocator@G@std@@QEAAXPEAG_K@Z +@ cdecl -arch=win32 -i386 -norelay ?deallocate@?$allocator@G@std@@QAEXPAGI@Z(ptr long) __thiscall_MSVCP_allocator_short_deallocate +@ cdecl -arch=win64 ?deallocate@?$allocator@G@std@@QEAAXPEAG_K@Z(ptr ptr long) MSVCP_allocator_short_deallocate @ cdecl -arch=win32 -i386 -norelay ?deallocate@?$allocator@_W@std@@QAEXPA_WI@Z(ptr long) __thiscall_MSVCP_allocator_wchar_deallocate @ cdecl -arch=win64 ?deallocate@?$allocator@_W@std@@QEAAXPEA_W_K@Z(ptr ptr long) MSVCP_allocator_wchar_deallocate @ stub -arch=win32 ?decimal_point@?$_Mpunct@D@std@@QBEDXZ @@ -3246,8 +3246,8 @@ @ stub ?denorm_min@?$numeric_limits@_W@std@@SA_WXZ @ cdecl -arch=win32 -i386 -norelay ?destroy@?$allocator@D@std@@QAEXPAD@Z(ptr) __thiscall_MSVCP_allocator_char_destroy @ cdecl -arch=win64 ?destroy@?$allocator@D@std@@QEAAXPEAD@Z(ptr ptr) MSVCP_allocator_char_destroy -@ stub -arch=win32 ?destroy@?$allocator@G@std@@QAEXPAG@Z -@ stub -arch=win64 ?destroy@?$allocator@G@std@@QEAAXPEAG@Z +@ cdecl -arch=win32 -i386 -norelay ?destroy@?$allocator@G@std@@QAEXPAG@Z(ptr) __thiscall_MSVCP_allocator_short_destroy +@ cdecl -arch=win64 ?destroy@?$allocator@G@std@@QEAAXPEAG@Z(ptr ptr) MSVCP_allocator_short_destroy @ cdecl -arch=win32 -i386 -norelay ?destroy@?$allocator@_W@std@@QAEXPA_W@Z(ptr) __thiscall_MSVCP_allocator_wchar_destroy @ cdecl -arch=win64 ?destroy@?$allocator@_W@std@@QEAAXPEA_W@Z(ptr ptr) MSVCP_allocator_wchar_destroy @ stub ?digits10@?$numeric_limits@C@std@@2HB @@ -4511,8 +4511,8 @@ @ stub -arch=win64 ?max_length@codecvt_base@std@@QEBAHXZ @ cdecl -arch=win32 -i386 -norelay ?max_size@?$allocator@D@std@@QBEIXZ() __thiscall_MSVCP_allocator_char_max_size @ cdecl -arch=win64 ?max_size@?$allocator@D@std@@QEBA_KXZ(ptr) MSVCP_allocator_char_max_size -@ stub -arch=win32 ?max_size@?$allocator@G@std@@QBEIXZ -@ stub -arch=win64 ?max_size@?$allocator@G@std@@QEBA_KXZ +@ cdecl -arch=win32 -i386 -norelay ?max_size@?$allocator@G@std@@QBEIXZ() __thiscall_MSVCP_allocator_short_max_size +@ cdecl -arch=win64 ?max_size@?$allocator@G@std@@QEBA_KXZ(ptr) MSVCP_allocator_short_max_size @ cdecl -arch=win32 -i386 -norelay ?max_size@?$allocator@_W@std@@QBEIXZ() __thiscall_MSVCP_allocator_wchar_max_size @ cdecl -arch=win64 ?max_size@?$allocator@_W@std@@QEBA_KXZ(ptr) MSVCP_allocator_wchar_max_size @ stub -arch=win32 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ