From 84c5e3a198ce7993bf1f880508715fde61003f86 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Wed, 17 Oct 2012 09:59:32 +0200 Subject: [PATCH] msvcp71: Added istrstream destructor implementation. --- dlls/msvcp71/ios.c | 28 ++++++++++++++++++++++++++++ dlls/msvcp71/msvcp71.spec | 4 ++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/dlls/msvcp71/ios.c b/dlls/msvcp71/ios.c index b9af853f132..8c4e4dc2d12 100644 --- a/dlls/msvcp71/ios.c +++ b/dlls/msvcp71/ios.c @@ -284,6 +284,14 @@ typedef struct { */ } ostrstream; +typedef struct { + basic_istream_char base; + strstreambuf buf; + /* virtual inheritance + * basic_ios_char basic_ios; + */ +} istrstream; + typedef struct { basic_iostream_char base; strstreambuf buf; @@ -486,6 +494,8 @@ extern const vtable_ptr MSVCP_strstreambuf_vtable; static const int ostrstream_vbtable[] = {0, sizeof(ostrstream)}; extern const vtable_ptr MSVCP_ostrstream_vtable; +static const int istrstream_vbtable[] = {0, sizeof(istrstream)}; + static const int strstream_vbtable1[] = {0, sizeof(strstream)}; static const int strstream_vbtable2[] = {0, sizeof(strstream)-FIELD_OFFSET(strstream, base.base2)}; extern const vtable_ptr MSVCP_strstream_vtable; @@ -12473,6 +12483,24 @@ ostrstream* __thiscall ostrstream_vector_dtor(basic_ios_char *base, unsigned int return this; } +static inline istrstream* istrstream_from_basic_ios(basic_ios_char *ptr) +{ + return (istrstream*)((char*)ptr-istrstream_vbtable[1]); +} + +/* ??1istrstream@std@@UAE@XZ */ +/* ??1istrstream@std@@UEAA@XZ */ +DEFINE_THISCALL_WRAPPER(istrstream_dtor, 4) +void __thiscall istrstream_dtor(basic_ios_char *base) +{ + istrstream *this = istrstream_from_basic_ios(base); + + TRACE("(%p)\n", this); + + basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base)); + strstreambuf_dtor(&this->buf); +} + static inline basic_ios_char* strstream_to_basic_ios(strstream *ptr) { return (basic_ios_char*)((char*)ptr+strstream_vbtable1[1]); diff --git a/dlls/msvcp71/msvcp71.spec b/dlls/msvcp71/msvcp71.spec index 726bfd809f4..26083b8e537 100644 --- a/dlls/msvcp71/msvcp71.spec +++ b/dlls/msvcp71/msvcp71.spec @@ -1197,8 +1197,8 @@ @ cdecl -arch=win64 ??1facet@locale@std@@UEAA@XZ(ptr) locale_facet_dtor @ thiscall -arch=win32 ??1ios_base@std@@UAE@XZ(ptr) ios_base_dtor @ cdecl -arch=win64 ??1ios_base@std@@UEAA@XZ(ptr) ios_base_dtor -@ stub -arch=win32 ??1istrstream@std@@UAE@XZ -@ stub -arch=win64 ??1istrstream@std@@UEAA@XZ +@ thiscall -arch=win32 ??1istrstream@std@@UAE@XZ(ptr) istrstream_dtor +@ cdecl -arch=win64 ??1istrstream@std@@UEAA@XZ(ptr) istrstream_dtor @ thiscall -arch=win32 ??1locale@std@@QAE@XZ(ptr) locale_dtor @ cdecl -arch=win64 ??1locale@std@@QEAA@XZ(ptr) locale_dtor @ stub -arch=win32 ??1messages_base@std@@UAE@XZ