From 6d22a3a4764d2e3247b26c875ff27ee2963e7220 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Mon, 11 Jan 2016 10:36:47 +0100 Subject: [PATCH] msvcp120: Fix layout of classes with vtordisp field. Signed-off-by: Piotr Caban Signed-off-by: Alexandre Julliard --- dlls/msvcp120/tests/msvcp120.c | 48 +++---- dlls/msvcp90/ios.c | 237 +++++++++++---------------------- 2 files changed, 97 insertions(+), 188 deletions(-) diff --git a/dlls/msvcp120/tests/msvcp120.c b/dlls/msvcp120/tests/msvcp120.c index f5c09543285..27244703b9b 100644 --- a/dlls/msvcp120/tests/msvcp120.c +++ b/dlls/msvcp120/tests/msvcp120.c @@ -1550,51 +1550,37 @@ static void test_cnd(void) } static struct { - struct { - int value; - int todo; - } arch[2]; + int value[2]; const char* export_name; } vbtable_size_exports_list[] = { - {{{0x20, FALSE}, {0x20, FALSE}}, "??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@"}, - {{{0x10, FALSE}, {0x10, FALSE}}, "??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@"}, - {{{0x20, FALSE}, {0x20, FALSE}}, "??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@"}, - {{{0x10, FALSE}, {0x10, FALSE}}, "??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@"}, - {{{0x20, FALSE}, {0x20, FALSE}}, "??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@"}, - {{{0x10, FALSE}, {0x10, FALSE}}, "??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@"}, - {{{0x18, FALSE}, {0x18, FALSE}}, "??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@"}, - {{{0x18, FALSE}, {0x18, FALSE}}, "??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@"}, - {{{0x18, FALSE}, {0x18, FALSE}}, "??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@"}, - {{{ 0x8, TRUE}, {0x10, FALSE}}, "??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@"}, - {{{ 0x8, TRUE}, {0x10, FALSE}}, "??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@"}, - {{{ 0x8, TRUE}, {0x10, FALSE}}, "??_8?$basic_ostream@_WU?$char_traits@_W@std@@@std@@7B@"}, - {{{ 0x0, FALSE}, { 0x0, FALSE}}, 0} + {{0x20, 0x20}, "??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@"}, + {{0x10, 0x10}, "??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@"}, + {{0x20, 0x20}, "??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@"}, + {{0x10, 0x10}, "??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@"}, + {{0x20, 0x20}, "??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@"}, + {{0x10, 0x10}, "??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@"}, + {{0x18, 0x18}, "??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@"}, + {{0x18, 0x18}, "??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@"}, + {{0x18, 0x18}, "??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@"}, + {{ 0x8, 0x10}, "??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@"}, + {{ 0x8, 0x10}, "??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@"}, + {{ 0x8, 0x10}, "??_8?$basic_ostream@_WU?$char_traits@_W@std@@@std@@7B@"}, + {{ 0x0, 0x0}, 0} }; static void test_vbtable_size_exports(void) { int i; const int *p_vbtable; - int arch_idx; - - if(sizeof(void*) == 8) - arch_idx = 1; - else - arch_idx = 0; + int arch_idx = (sizeof(void*) == 8); for (i = 0; vbtable_size_exports_list[i].export_name; i++) { SET(p_vbtable, vbtable_size_exports_list[i].export_name); ok(p_vbtable[0] == 0, "vbtable[0] wrong, got 0x%x\n", p_vbtable[0]); - - if (vbtable_size_exports_list[i].arch[arch_idx].todo) - todo_wine - ok(p_vbtable[1] == vbtable_size_exports_list[i].arch[arch_idx].value, - "%d: %s[1] wrong, got 0x%x\n", i, vbtable_size_exports_list[i].export_name, p_vbtable[1]); - else - ok(p_vbtable[1] == vbtable_size_exports_list[i].arch[arch_idx].value, - "%d: %s[1] wrong, got 0x%x\n", i, vbtable_size_exports_list[i].export_name, p_vbtable[1]); + ok(p_vbtable[1] == vbtable_size_exports_list[i].value[arch_idx], + "%d: %s[1] wrong, got 0x%x\n", i, vbtable_size_exports_list[i].export_name, p_vbtable[1]); } } diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c index 738625c1785..c190ce4639b 100644 --- a/dlls/msvcp90/ios.c +++ b/dlls/msvcp90/ios.c @@ -141,16 +141,6 @@ typedef struct { wchar_t fillch; } basic_ios_wchar; -#if _MSVCP_VER >= 110 -typedef struct { - int padding; - int vtordisp; -} basic_ios_vtordisp; -#define BASIC_IOS_VTORDISP_SIZE sizeof(basic_ios_vtordisp) -#else -#define BASIC_IOS_VTORDISP_SIZE 0 -#endif - typedef struct _basic_ostream_char { const int *vbtable; /* virtual inheritance @@ -346,12 +336,17 @@ enum file_type { type_unknown }; -#if _MSVCP_VER >= 100 -#define VBTABLE_ALIGN 8 +#if _MSVCP_VER >= 110 +#define BASIC_IOS_VTORDISP 1 +#define INIT_BASIC_IOS_VTORDISP(basic_ios) ((int*)basic_ios)[-1] = 0 #else -#define VBTABLE_ALIGN 4 +#define BASIC_IOS_VTORDISP 0 +#define INIT_BASIC_IOS_VTORDISP(basic_ios) #endif +#define VBTABLE_ENTRY(class, offset, vbase, vtordisp) ALIGNED_SIZE(sizeof(class)+vtordisp*sizeof(int), TYPE_ALIGNMENT(vbase))-offset +#define VBTABLE_BASIC_IOS_ENTRY(class, offset) VBTABLE_ENTRY(class, offset, basic_ios_char, BASIC_IOS_VTORDISP) + extern const vtable_ptr MSVCP_iosb_vtable; /* ??_7ios_base@std@@6B@ */ @@ -395,57 +390,57 @@ extern const vtable_ptr MSVCP_basic_stringbuf_short_vtable; /* ??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@ */ const int basic_ostream_char_vbtable[] = {0, - ALIGNED_SIZE(sizeof(basic_ostream_char), VBTABLE_ALIGN)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_ostream_char, 0)}; /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ostream_char_vtable; /* ??_8?$basic_ostream@_WU?$char_traits@_W@std@@@std@@7B@ */ const int basic_ostream_wchar_vbtable[] = {0, - ALIGNED_SIZE(sizeof(basic_ostream_wchar), VBTABLE_ALIGN)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)}; /* ??_7?$basic_ostream@_WU?$char_traits@_W@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ostream_wchar_vtable; /* ??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@ */ const int basic_ostream_short_vbtable[] = {0, - ALIGNED_SIZE(sizeof(basic_ostream_wchar), VBTABLE_ALIGN)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_ostream_wchar, 0)}; /* ??_7?$basic_ostream@GU?$char_traits@G@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ostream_short_vtable; /* ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ */ const int basic_istream_char_vbtable[] = {0, - ALIGNED_SIZE(sizeof(basic_istream_char), VBTABLE_ALIGN)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_istream_char, 0)}; /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_istream_char_vtable; /* ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ */ const int basic_istream_wchar_vbtable[] = {0, - ALIGNED_SIZE(sizeof(basic_istream_wchar), VBTABLE_ALIGN)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)}; /* ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_istream_wchar_vtable; /* ??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@ */ const int basic_istream_short_vbtable[] = {0, - ALIGNED_SIZE(sizeof(basic_istream_wchar), VBTABLE_ALIGN)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_istream_wchar, 0)}; /* ??_7?$basic_istream@GU?$char_traits@G@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_istream_short_vtable; /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */ const int basic_iostream_char_vbtable1[] = {0, - ALIGNED_SIZE(sizeof(basic_iostream_char), VBTABLE_ALIGN)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_iostream_char, 0)}; /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */ const int basic_iostream_char_vbtable2[] = {0, - ALIGNED_SIZE(sizeof(basic_iostream_char), VBTABLE_ALIGN)-FIELD_OFFSET(basic_iostream_char, base2)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_iostream_char, FIELD_OFFSET(basic_iostream_char, base2))}; /* ??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_iostream_char_vtable; /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */ /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */ const int basic_iostream_wchar_vbtable1[] = {0, - ALIGNED_SIZE(sizeof(basic_iostream_wchar), VBTABLE_ALIGN)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_iostream_wchar, 0)}; /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */ /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */ const int basic_iostream_wchar_vbtable2[] = {0, - ALIGNED_SIZE(sizeof(basic_iostream_wchar), VBTABLE_ALIGN)-FIELD_OFFSET(basic_iostream_wchar, base2)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_iostream_wchar, FIELD_OFFSET(basic_iostream_wchar, base2))}; /* ??_7?$basic_iostream@_WU?$char_traits@_W@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_iostream_wchar_vtable; /* ??_7?$basic_iostream@GU?$char_traits@G@std@@@std@@6B@ */ @@ -453,57 +448,57 @@ extern const vtable_ptr MSVCP_basic_iostream_short_vtable; /* ??_8?$basic_ofstream@DU?$char_traits@D@std@@@std@@7B@ */ const int basic_ofstream_char_vbtable[] = {0, - sizeof(basic_ofstream_char)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_ofstream_char, 0)}; /* ??_7?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ofstream_char_vtable; /* ??_8?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@7B@ */ const int basic_ofstream_wchar_vbtable[] = {0, - sizeof(basic_ofstream_wchar)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_ofstream_wchar, 0)}; /* ??_7?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ofstream_wchar_vtable; /* ??_8?$basic_ofstream@GU?$char_traits@G@std@@@std@@7B@ */ const int basic_ofstream_short_vbtable[] = {0, - sizeof(basic_ofstream_wchar)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_ofstream_wchar, 0)}; /* ??_7?$basic_ofstream@GU?$char_traits@G@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ofstream_short_vtable; /* ??_8?$basic_ifstream@DU?$char_traits@D@std@@@std@@7B@ */ const int basic_ifstream_char_vbtable[] = {0, - sizeof(basic_ifstream_char)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_ifstream_char, 0)}; /* ??_7?$basic_ifstream@DU?$char_traits@D@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ifstream_char_vtable; /* ??_8?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@7B@ */ const int basic_ifstream_wchar_vbtable[] = {0, - sizeof(basic_ifstream_wchar)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_ifstream_wchar, 0)}; /* ??_7?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ifstream_wchar_vtable; /* ??_8?$basic_ifstream@GU?$char_traits@G@std@@@std@@7B@ */ const int basic_ifstream_short_vbtable[] = {0, - sizeof(basic_ifstream_wchar)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_ifstream_wchar, 0)}; /* ??_7?$basic_ifstream@GU?$char_traits@G@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ifstream_short_vtable; /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */ const int basic_fstream_char_vbtable1[] = {0, - sizeof(basic_fstream_char)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_fstream_char, 0)}; /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */ const int basic_fstream_char_vbtable2[] = {0, - sizeof(basic_fstream_char)-FIELD_OFFSET(basic_fstream_char, base.base2)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_fstream_char, FIELD_OFFSET(basic_fstream_char, base.base2))}; /* ??_7?$basic_fstream@DU?$char_traits@D@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_fstream_char_vtable; /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */ /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */ const int basic_fstream_wchar_vbtable1[] = {0, - sizeof(basic_fstream_wchar)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_fstream_wchar, 0)}; /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */ /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */ const int basic_fstream_wchar_vbtable2[] = {0, - sizeof(basic_fstream_wchar)-FIELD_OFFSET(basic_fstream_wchar, base.base2)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_fstream_wchar, FIELD_OFFSET(basic_fstream_wchar, base.base2))}; /* ??_7?$basic_fstream@_WU?$char_traits@_W@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_fstream_wchar_vtable; /* ??_7?$basic_fstream@GU?$char_traits@G@std@@@std@@6B@ */ @@ -511,78 +506,78 @@ extern const vtable_ptr MSVCP_basic_fstream_short_vtable; /* ??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */ const int basic_ostringstream_char_vbtable[] = {0, - sizeof(basic_ostringstream_char)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_ostringstream_char, 0)}; /* ??_7?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ostringstream_char_vtable; /* ??_8?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */ const int basic_ostringstream_wchar_vbtable[] = {0, - sizeof(basic_ostringstream_wchar)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_ostringstream_wchar, 0)}; /* ??_7?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ostringstream_wchar_vtable; /* ??_8?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */ const int basic_ostringstream_short_vbtable[] = {0, - sizeof(basic_ostringstream_wchar)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_ostringstream_wchar, 0)}; /* ??_7?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ostringstream_short_vtable; /* ??_8?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */ const int basic_istringstream_char_vbtable[] = {0, - sizeof(basic_istringstream_char)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_istringstream_char, 0)}; /* ??_7?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_istringstream_char_vtable; /* ??_8?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */ const int basic_istringstream_wchar_vbtable[] = {0, - sizeof(basic_istringstream_wchar)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_istringstream_wchar, 0)}; /* ??_7?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_istringstream_wchar_vtable; /* ??_8?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */ const int basic_istringstream_short_vbtable[] = {0, - sizeof(basic_istringstream_wchar)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_istringstream_wchar, 0)}; /* ??_7?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_istringstream_short_vtable; /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */ const int basic_stringstream_char_vbtable1[] = {0, - sizeof(basic_stringstream_char)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_char, 0)}; /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */ const int basic_stringstream_char_vbtable2[] = {0, - sizeof(basic_stringstream_char)-FIELD_OFFSET(basic_stringstream_char, base.base2)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_char, FIELD_OFFSET(basic_stringstream_char, base.base2))}; /* ??_7?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_stringstream_char_vtable; /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */ const int basic_stringstream_wchar_vbtable1[] = {0, - sizeof(basic_stringstream_wchar)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, 0)}; /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */ const int basic_stringstream_wchar_vbtable2[] = {0, - sizeof(basic_stringstream_wchar)-FIELD_OFFSET(basic_stringstream_wchar, base.base2)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, FIELD_OFFSET(basic_stringstream_wchar, base.base2))}; /* ??_7?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_stringstream_wchar_vtable; /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */ const int basic_stringstream_short_vbtable1[] = {0, - sizeof(basic_stringstream_wchar)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, 0)}; /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */ const int basic_stringstream_short_vbtable2[] = {0, - sizeof(basic_stringstream_wchar)-FIELD_OFFSET(basic_stringstream_wchar, base.base2)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(basic_stringstream_wchar, FIELD_OFFSET(basic_stringstream_wchar, base.base2))}; /* ??_7?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_stringstream_short_vtable; /* ??_7strstreambuf@std@@6B */ extern const vtable_ptr MSVCP_strstreambuf_vtable; -static const int ostrstream_vbtable[] = {0, sizeof(ostrstream)+BASIC_IOS_VTORDISP_SIZE}; +static const int ostrstream_vbtable[] = {0, VBTABLE_BASIC_IOS_ENTRY(ostrstream, 0)}; extern const vtable_ptr MSVCP_ostrstream_vtable; -static const int istrstream_vbtable[] = {0, sizeof(istrstream)+BASIC_IOS_VTORDISP_SIZE}; +static const int istrstream_vbtable[] = {0, VBTABLE_BASIC_IOS_ENTRY(istrstream, 0)}; -static const int strstream_vbtable1[] = {0, sizeof(strstream)+BASIC_IOS_VTORDISP_SIZE}; +static const int strstream_vbtable1[] = {0, VBTABLE_BASIC_IOS_ENTRY(strstream, 0)}; static const int strstream_vbtable2[] = {0, - sizeof(strstream)-FIELD_OFFSET(strstream, base.base2)+BASIC_IOS_VTORDISP_SIZE}; + VBTABLE_BASIC_IOS_ENTRY(strstream, FIELD_OFFSET(strstream, base.base2))}; extern const vtable_ptr MSVCP_strstream_vtable; DEFINE_RTTI_DATA0(iosb, 0, ".?AV?$_Iosb@H@std@@") @@ -6228,9 +6223,7 @@ basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this, if(virt_init) { this->vbtable = basic_ostream_char_vbtable; base = basic_ostream_char_get_basic_ios(this); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)base)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(base); basic_ios_char_ctor(base); }else { base = basic_ostream_char_get_basic_ios(this); @@ -6254,9 +6247,7 @@ basic_ostream_char* __thiscall basic_ostream_char_ctor_uninitialized(basic_ostre if(virt_init) { this->vbtable = basic_ostream_char_vbtable; base = basic_ostream_char_get_basic_ios(this); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)base)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(base); basic_ios_char_ctor(base); }else { base = basic_ostream_char_get_basic_ios(this); @@ -7057,9 +7048,7 @@ basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor(basic_ostream_wchar *th if(virt_init) { this->vbtable = basic_ostream_wchar_vbtable; base = basic_ostream_wchar_get_basic_ios(this); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)base)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(base); basic_ios_wchar_ctor(base); }else { base = basic_ostream_wchar_get_basic_ios(this); @@ -7094,9 +7083,7 @@ basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor_uninitialized(basic_ost if(virt_init) { this->vbtable = basic_ostream_wchar_vbtable; base = basic_ostream_wchar_get_basic_ios(this); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)base)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(base); basic_ios_wchar_ctor(base); }else { base = basic_ostream_wchar_get_basic_ios(this); @@ -8109,9 +8096,7 @@ basic_istream_char* __thiscall basic_istream_char_ctor_init(basic_istream_char * if(virt_init) { this->vbtable = basic_istream_char_vbtable; base = basic_istream_char_get_basic_ios(this); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)base)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(base); basic_ios_char_ctor(base); }else { base = basic_istream_char_get_basic_ios(this); @@ -8144,9 +8129,7 @@ basic_istream_char* __thiscall basic_istream_char_ctor_uninitialized(basic_istre if(virt_init) { this->vbtable = basic_istream_char_vbtable; base = basic_istream_char_get_basic_ios(this); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)base)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(base); basic_ios_char_ctor(base); }else { base = basic_istream_char_get_basic_ios(this); @@ -9550,9 +9533,7 @@ basic_istream_wchar* __thiscall basic_istream_wchar_ctor_init(basic_istream_wcha if(virt_init) { this->vbtable = basic_istream_wchar_vbtable; base = basic_istream_wchar_get_basic_ios(this); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)base)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(base); basic_ios_wchar_ctor(base); }else { base = basic_istream_wchar_get_basic_ios(this); @@ -9607,9 +9588,7 @@ basic_istream_wchar* __thiscall basic_istream_wchar_ctor_uninitialized( if(virt_init) { this->vbtable = basic_istream_wchar_vbtable; base = basic_istream_wchar_get_basic_ios(this); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)base)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(base); basic_ios_wchar_ctor(base); }else { base = basic_istream_wchar_get_basic_ios(this); @@ -11099,9 +11078,7 @@ basic_iostream_char* __thiscall basic_iostream_char_ctor(basic_iostream_char *th this->base1.vbtable = basic_iostream_char_vbtable1; this->base2.vbtable = basic_iostream_char_vbtable2; basic_ios = basic_istream_char_get_basic_ios(&this->base1); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_istream_char_get_basic_ios(&this->base1); @@ -11197,9 +11174,7 @@ basic_iostream_wchar* __thiscall basic_iostream_wchar_ctor(basic_iostream_wchar this->base1.vbtable = basic_iostream_wchar_vbtable1; this->base2.vbtable = basic_iostream_wchar_vbtable2; basic_ios = basic_istream_wchar_get_basic_ios(&this->base1); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_istream_wchar_get_basic_ios(&this->base1); @@ -11310,9 +11285,7 @@ basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *th if(virt_init) { this->base.vbtable = basic_ofstream_char_vbtable; basic_ios = basic_ostream_char_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_ostream_char_get_basic_ios(&this->base); @@ -11337,9 +11310,7 @@ basic_ofstream_char* __thiscall basic_ofstream_char_ctor_file( if(virt_init) { this->base.vbtable = basic_ofstream_char_vbtable; basic_ios = basic_ostream_char_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_ostream_char_get_basic_ios(&this->base); @@ -11537,9 +11508,7 @@ basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor(basic_ofstream_wchar if(virt_init) { this->base.vbtable = basic_ofstream_wchar_vbtable; basic_ios = basic_ostream_wchar_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_ostream_wchar_get_basic_ios(&this->base); @@ -11574,9 +11543,7 @@ basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_file( if(virt_init) { this->base.vbtable = basic_ofstream_wchar_vbtable; basic_ios = basic_ostream_wchar_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_ostream_wchar_get_basic_ios(&this->base); @@ -11831,9 +11798,7 @@ basic_ifstream_char* __thiscall basic_ifstream_char_ctor(basic_ifstream_char *th if(virt_init) { this->base.vbtable = basic_ifstream_char_vbtable; basic_ios = basic_istream_char_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_istream_char_get_basic_ios(&this->base); @@ -11858,9 +11823,7 @@ basic_ifstream_char* __thiscall basic_ifstream_char_ctor_file( if(virt_init) { this->base.vbtable = basic_ifstream_char_vbtable; basic_ios = basic_istream_char_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_istream_char_get_basic_ios(&this->base); @@ -12067,9 +12030,7 @@ basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor(basic_ifstream_wchar if(virt_init) { this->base.vbtable = basic_ifstream_wchar_vbtable; basic_ios = basic_istream_wchar_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_istream_wchar_get_basic_ios(&this->base); @@ -12104,9 +12065,7 @@ basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_file( if(virt_init) { this->base.vbtable = basic_ifstream_wchar_vbtable; basic_ios = basic_istream_wchar_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_istream_wchar_get_basic_ios(&this->base); @@ -12380,9 +12339,7 @@ basic_fstream_char* __thiscall basic_fstream_char_ctor(basic_fstream_char *this, this->base.base1.vbtable = basic_fstream_char_vbtable1; this->base.base2.vbtable = basic_fstream_char_vbtable2; basic_ios = basic_istream_char_get_basic_ios(&this->base.base1); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_istream_char_get_basic_ios(&this->base.base1); @@ -12408,9 +12365,7 @@ basic_fstream_char* __thiscall basic_fstream_char_ctor_file(basic_fstream_char * this->base.base1.vbtable = basic_fstream_char_vbtable1; this->base.base2.vbtable = basic_fstream_char_vbtable2; basic_ios = basic_istream_char_get_basic_ios(&this->base.base1); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_istream_char_get_basic_ios(&this->base.base1); @@ -12618,9 +12573,7 @@ basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor(basic_fstream_wchar *th this->base.base1.vbtable = basic_fstream_wchar_vbtable1; this->base.base2.vbtable = basic_fstream_wchar_vbtable2; basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1); @@ -12656,9 +12609,7 @@ basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_file(basic_fstream_wcha this->base.base1.vbtable = basic_fstream_wchar_vbtable1; this->base.base2.vbtable = basic_fstream_wchar_vbtable2; basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1); @@ -12931,9 +12882,7 @@ basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_str(basic_ost if(virt_init) { this->base.vbtable = basic_ostringstream_char_vbtable; basic_ios = basic_ostream_char_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_ostream_char_get_basic_ios(&this->base); @@ -12958,9 +12907,7 @@ basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_mode( if(virt_init) { this->base.vbtable = basic_ostringstream_char_vbtable; basic_ios = basic_ostream_char_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_ostream_char_get_basic_ios(&this->base); @@ -13078,9 +13025,7 @@ basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_str(basic_o if(virt_init) { this->base.vbtable = basic_ostringstream_wchar_vbtable; basic_ios = basic_ostream_wchar_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_ostream_wchar_get_basic_ios(&this->base); @@ -13116,9 +13061,7 @@ basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_mode( if(virt_init) { this->base.vbtable = basic_ostringstream_wchar_vbtable; basic_ios = basic_ostream_wchar_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_ostream_wchar_get_basic_ios(&this->base); @@ -13266,9 +13209,7 @@ basic_istringstream_char* __thiscall basic_istringstream_char_ctor_str(basic_ist if(virt_init) { this->base.vbtable = basic_istringstream_char_vbtable; basic_ios = basic_istream_char_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_istream_char_get_basic_ios(&this->base); @@ -13293,9 +13234,7 @@ basic_istringstream_char* __thiscall basic_istringstream_char_ctor_mode( if(virt_init) { this->base.vbtable = basic_istringstream_char_vbtable; basic_ios = basic_istream_char_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_istream_char_get_basic_ios(&this->base); @@ -13413,9 +13352,7 @@ basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_str(basic_i if(virt_init) { this->base.vbtable = basic_istringstream_wchar_vbtable; basic_ios = basic_istream_wchar_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_istream_wchar_get_basic_ios(&this->base); @@ -13451,9 +13388,7 @@ basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_mode( if(virt_init) { this->base.vbtable = basic_istringstream_wchar_vbtable; basic_ios = basic_istream_wchar_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_istream_wchar_get_basic_ios(&this->base); @@ -13602,9 +13537,7 @@ basic_stringstream_char* __thiscall basic_stringstream_char_ctor_str(basic_strin this->base.base1.vbtable = basic_stringstream_char_vbtable1; this->base.base2.vbtable = basic_stringstream_char_vbtable2; basic_ios = basic_istream_char_get_basic_ios(&this->base.base1); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_istream_char_get_basic_ios(&this->base.base1); @@ -13630,9 +13563,7 @@ basic_stringstream_char* __thiscall basic_stringstream_char_ctor_mode( this->base.base1.vbtable = basic_stringstream_char_vbtable1; this->base.base2.vbtable = basic_stringstream_char_vbtable2; basic_ios = basic_istream_char_get_basic_ios(&this->base.base1); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_istream_char_get_basic_ios(&this->base.base1); @@ -13752,9 +13683,7 @@ basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_str(basic_str this->base.base1.vbtable = basic_stringstream_wchar_vbtable1; this->base.base2.vbtable = basic_stringstream_wchar_vbtable2; basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1); @@ -13791,9 +13720,7 @@ basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_mode( this->base.base1.vbtable = basic_stringstream_wchar_vbtable1; this->base.base2.vbtable = basic_stringstream_wchar_vbtable2; basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_wchar_ctor(basic_ios); }else { basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1); @@ -14339,9 +14266,7 @@ ostrstream* __thiscall ostrstream_ctor(ostrstream *this, char *buf, streamsize s if(virt_init) { this->base.vbtable = ostrstream_vbtable; basic_ios = basic_ostream_char_get_basic_ios(&this->base); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_ostream_char_get_basic_ios(&this->base); @@ -14848,9 +14773,7 @@ strstream* __thiscall strstream_ctor(strstream *this, char *buf, streamsize size this->base.base1.vbtable = strstream_vbtable1; this->base.base2.vbtable = strstream_vbtable2; basic_ios = basic_istream_char_get_basic_ios(&this->base.base1); -#if _MSVCP_VER >= 110 - ((basic_ios_vtordisp*)basic_ios)[-1].vtordisp = 0; -#endif + INIT_BASIC_IOS_VTORDISP(basic_ios); basic_ios_char_ctor(basic_ios); }else { basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);