[1/4] msvcirt: Add a partial implementation of class strstream.

Iván Matellanes matellanesivan at gmail.com
Fri Oct 21 12:34:01 CDT 2016


Signed-off-by: Iván Matellanes <matellanesivan at gmail.com>
---
 dlls/msvcirt/msvcirt.c      | 69 +++++++++++++++++++++++++++++++++++++++++++++
 dlls/msvcirt/msvcirt.spec   | 46 +++++++++++++++---------------
 dlls/msvcrt20/msvcrt20.spec | 46 +++++++++++++++---------------
 dlls/msvcrt40/msvcrt40.spec | 46 +++++++++++++++---------------
 4 files changed, 138 insertions(+), 69 deletions(-)

diff --git a/dlls/msvcirt/msvcirt.c b/dlls/msvcirt/msvcirt.c
index c210862..99388fe 100644
--- a/dlls/msvcirt/msvcirt.c
+++ b/dlls/msvcirt/msvcirt.c
@@ -195,6 +195,8 @@ extern const vtable_ptr MSVCP_istream_withassign_vtable;
 extern const vtable_ptr MSVCP_istrstream_vtable;
 /* ??_7iostream@@6B@ */
 extern const vtable_ptr MSVCP_iostream_vtable;
+/* ??_7strstream@@6B@ */
+extern const vtable_ptr MSVCP_strstream_vtable;
 
 #ifndef __GNUC__
 void __asm_dummy_vtables(void) {
@@ -263,6 +265,8 @@ void __asm_dummy_vtables(void) {
             VTABLE_ADD_FUNC(istream_vector_dtor));
     __ASM_VTABLE(iostream,
             VTABLE_ADD_FUNC(iostream_vector_dtor));
+    __ASM_VTABLE(strstream,
+            VTABLE_ADD_FUNC(iostream_vector_dtor));
 #ifndef __GNUC__
 }
 #endif
@@ -279,8 +283,10 @@ const int ostream_vbtable[] = {0, VBTABLE_ENTRY(ostream, FIELD_OFFSET(ostream, v
 /* ??_8istrstream@@7B@ */
 const int istream_vbtable[] = {0, VBTABLE_ENTRY(istream, FIELD_OFFSET(istream, vbtable), ios)};
 /* ??_8iostream@@7Bistream@@@ */
+/* ??_8strstream@@7Bistream@@@ */
 const int iostream_vbtable_istream[] = {0, VBTABLE_ENTRY(iostream, FIELD_OFFSET(iostream, base1), ios)};
 /* ??_8iostream@@7Bostream@@@ */
+/* ??_8strstream@@7Bostream@@@ */
 const int iostream_vbtable_ostream[] = {0, VBTABLE_ENTRY(iostream, FIELD_OFFSET(iostream, base2), ios)};
 
 DEFINE_RTTI_DATA0(streambuf, 0, ".?AVstreambuf@@")
@@ -301,6 +307,9 @@ DEFINE_RTTI_DATA2(istrstream, sizeof(istream),
 DEFINE_RTTI_DATA4(iostream, sizeof(iostream),
     &istream_rtti_base_descriptor, &ios_rtti_base_descriptor,
     &ostream_rtti_base_descriptor, &ios_rtti_base_descriptor, ".?AViostream@@")
+DEFINE_RTTI_DATA4(strstream, sizeof(iostream),
+    &istream_rtti_base_descriptor, &ios_rtti_base_descriptor,
+    &ostream_rtti_base_descriptor, &ios_rtti_base_descriptor, ".?AVstrstream@@")
 
 /* ?cin@@3Vistream_withassign@@A */
 struct {
@@ -4129,6 +4138,8 @@ iostream* __thiscall iostream_copy_ctor(iostream *this, const iostream *copy, BO
 
 /* ??1iostream@@UAE at XZ */
 /* ??1iostream@@UEAA at XZ */
+/* ??1strstream@@UAE at XZ */
+/* ??1strstream@@UEAA at XZ */
 DEFINE_THISCALL_WRAPPER(iostream_dtor, 4)
 void __thiscall iostream_dtor(ios *base)
 {
@@ -4153,6 +4164,8 @@ iostream* __thiscall iostream_assign_sb(iostream *this, streambuf *sb)
 
 /* ??4iostream@@IAEAAV0 at AAV0@@Z */
 /* ??4iostream@@IEAAAEAV0 at AEAV0@@Z */
+/* ??4strstream@@QAEAAV0 at ABV0@@Z */
+/* ??4strstream@@QEAAAEAV0 at AEBV0@@Z */
 DEFINE_THISCALL_WRAPPER(iostream_assign, 8)
 iostream* __thiscall iostream_assign(iostream *this, const iostream *rhs)
 {
@@ -4161,6 +4174,8 @@ iostream* __thiscall iostream_assign(iostream *this, const iostream *rhs)
 
 /* ??_Diostream@@QAEXXZ */
 /* ??_Diostream@@QEAAXXZ */
+/* ??_Dstrstream@@QAEXXZ */
+/* ??_Dstrstream@@QEAAXXZ */
 DEFINE_THISCALL_WRAPPER(iostream_vbase_dtor, 4)
 void __thiscall iostream_vbase_dtor(iostream *this)
 {
@@ -4173,6 +4188,7 @@ void __thiscall iostream_vbase_dtor(iostream *this)
 }
 
 /* ??_Eiostream@@UAEPAXI at Z */
+/* ??_Estrstream@@UAEPAXI at Z */
 DEFINE_THISCALL_WRAPPER(iostream_vector_dtor, 8)
 iostream* __thiscall iostream_vector_dtor(ios *base, unsigned int flags)
 {
@@ -4196,6 +4212,7 @@ iostream* __thiscall iostream_vector_dtor(ios *base, unsigned int flags)
 }
 
 /* ??_Giostream@@UAEPAXI at Z */
+/* ??_Gstrstream@@UAEPAXI at Z */
 DEFINE_THISCALL_WRAPPER(iostream_scalar_dtor, 8)
 iostream* __thiscall iostream_scalar_dtor(ios *base, unsigned int flags)
 {
@@ -4208,6 +4225,57 @@ iostream* __thiscall iostream_scalar_dtor(ios *base, unsigned int flags)
     return this;
 }
 
+/* ??0strstream@@QAE at ABV0@@Z */
+/* ??0strstream@@QEAA at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(strstream_copy_ctor, 12)
+iostream* __thiscall strstream_copy_ctor(iostream *this, const iostream *copy, BOOL virt_init)
+{
+    FIXME("(%p %p %d) stub\n", this, copy, virt_init);
+    return this;
+}
+
+/* ??0strstream@@QAE at PADHH@Z */
+/* ??0strstream@@QEAA at PEADHH@Z */
+DEFINE_THISCALL_WRAPPER(strstream_buffer_ctor, 20)
+iostream* __thiscall strstream_buffer_ctor(iostream *this, char *buffer, int length, int mode, BOOL virt_init)
+{
+    FIXME("(%p %p %d %d %d) stub\n", this, buffer, length, mode, virt_init);
+    return this;
+}
+
+/* ??0strstream@@QAE at XZ */
+/* ??0strstream@@QEAA at XZ */
+DEFINE_THISCALL_WRAPPER(strstream_ctor, 8)
+iostream* __thiscall strstream_ctor(iostream *this, BOOL virt_init)
+{
+    FIXME("(%p %d) stub\n", this, virt_init);
+    return this;
+}
+
+/* ?pcount at strstream@@QBEHXZ */
+/* ?pcount at strstream@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(strstream_pcount, 4)
+int __thiscall strstream_pcount(const iostream *this)
+{
+    return streambuf_out_waiting(istream_get_ios(&this->base1)->sb);
+}
+
+/* ?rdbuf at strstream@@QBEPAVstrstreambuf@@XZ */
+/* ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ */
+DEFINE_THISCALL_WRAPPER(strstream_rdbuf, 4)
+strstreambuf* __thiscall strstream_rdbuf(const iostream *this)
+{
+    return (strstreambuf*) istream_get_ios(&this->base1)->sb;
+}
+
+/* ?str at strstream@@QAEPADXZ */
+/* ?str at strstream@@QEAAPEADXZ */
+DEFINE_THISCALL_WRAPPER(strstream_str, 4)
+char* __thiscall strstream_str(iostream *this)
+{
+    return strstreambuf_str(strstream_rdbuf(this));
+}
+
 /* ??0Iostream_init@@QAE at AAVios@@H at Z */
 /* ??0Iostream_init@@QEAA at AEAVios@@H at Z */
 DEFINE_THISCALL_WRAPPER(Iostream_init_ios_ctor, 12)
@@ -4363,6 +4431,7 @@ static void init_io(void *base)
     init_istream_withassign_rtti(base);
     init_istrstream_rtti(base);
     init_iostream_rtti(base);
+    init_strstream_rtti(base);
 #endif
 
     if ((fb = MSVCRT_operator_new(sizeof(filebuf)))) {
diff --git a/dlls/msvcirt/msvcirt.spec b/dlls/msvcirt/msvcirt.spec
index 598d42a..557185d 100644
--- a/dlls/msvcirt/msvcirt.spec
+++ b/dlls/msvcirt/msvcirt.spec
@@ -112,12 +112,12 @@
 @ cdecl -arch=win64 ??0streambuf@@IEAA at XZ(ptr) streambuf_ctor
 @ thiscall -arch=win32 ??0streambuf@@QAE at ABV0@@Z(ptr ptr) streambuf_copy_ctor
 @ cdecl -arch=win64 ??0streambuf@@QEAA at AEBV0@@Z(ptr ptr) streambuf_copy_ctor
-@ stub -arch=win32 ??0strstream@@QAE at ABV0@@Z  # __thiscall strstream::strstream(class strstream const &)
-@ stub -arch=win64 ??0strstream@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0strstream@@QAE at PADHH@Z  # __thiscall strstream::strstream(char *,int,int)
-@ stub -arch=win64 ??0strstream@@QEAA at PEADHH@Z
-@ stub -arch=win32 ??0strstream@@QAE at XZ  # __thiscall strstream::strstream(void)
-@ stub -arch=win64 ??0strstream@@QEAA at XZ
+@ thiscall -arch=win32 ??0strstream@@QAE at ABV0@@Z(ptr ptr long) strstream_copy_ctor
+@ cdecl -arch=win64 ??0strstream@@QEAA at AEBV0@@Z(ptr ptr long) strstream_copy_ctor
+@ thiscall -arch=win32 ??0strstream@@QAE at PADHH@Z(ptr ptr long long long) strstream_buffer_ctor
+@ cdecl -arch=win64 ??0strstream@@QEAA at PEADHH@Z(ptr ptr long long long) strstream_buffer_ctor
+@ thiscall -arch=win32 ??0strstream@@QAE at XZ(ptr long) strstream_ctor
+@ cdecl -arch=win64 ??0strstream@@QEAA at XZ(ptr long) strstream_ctor
 @ thiscall -arch=win32 ??0strstreambuf@@QAE at ABV0@@Z(ptr ptr) strstreambuf_copy_ctor
 @ cdecl -arch=win64 ??0strstreambuf@@QEAA at AEBV0@@Z(ptr ptr) strstreambuf_copy_ctor
 @ thiscall -arch=win32 ??0strstreambuf@@QAE at H@Z(ptr long) strstreambuf_dynamic_ctor
@@ -166,8 +166,8 @@
 @ stub -arch=win64 ??1stdiostream@@UEAA at XZ
 @ thiscall -arch=win32 ??1streambuf@@UAE at XZ(ptr) streambuf_dtor
 @ cdecl -arch=win64 ??1streambuf@@UEAA at XZ(ptr) streambuf_dtor
-@ stub -arch=win32 ??1strstream@@UAE at XZ  # virtual __thiscall strstream::~strstream(void)
-@ stub -arch=win64 ??1strstream@@UEAA at XZ
+@ thiscall -arch=win32 ??1strstream@@UAE at XZ(ptr) iostream_dtor
+@ cdecl -arch=win64 ??1strstream@@UEAA at XZ(ptr) iostream_dtor
 @ thiscall -arch=win32 ??1strstreambuf@@UAE at XZ(ptr) strstreambuf_dtor
 @ cdecl -arch=win64 ??1strstreambuf@@UEAA at XZ(ptr) strstreambuf_dtor
 @ thiscall -arch=win32 ??4Iostream_init@@QAEAAV0 at ABV0@@Z(ptr ptr) Iostream_init_assign
@@ -220,8 +220,8 @@
 @ stub -arch=win64 ??4stdiostream@@QEAAAEAV0 at AEAV0@@Z
 @ thiscall -arch=win32 ??4streambuf@@QAEAAV0 at ABV0@@Z(ptr ptr) streambuf_assign
 @ cdecl -arch=win64 ??4streambuf@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) streambuf_assign
-@ stub -arch=win32 ??4strstream@@QAEAAV0 at AAV0@@Z  # class strstream & __thiscall strstream::operator=(class strstream &)
-@ stub -arch=win64 ??4strstream@@QEAAAEAV0 at AEAV0@@Z
+@ thiscall -arch=win32 ??4strstream@@QAEAAV0 at AAV0@@Z(ptr ptr) iostream_assign
+@ cdecl -arch=win64 ??4strstream@@QEAAAEAV0 at AEAV0@@Z(ptr ptr) iostream_assign
 @ thiscall -arch=win32 ??4strstreambuf@@QAEAAV0 at ABV0@@Z(ptr ptr) strstreambuf_assign
 @ cdecl -arch=win64 ??4strstreambuf@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) strstreambuf_assign
 @ thiscall -arch=win32 ??5istream@@QAEAAV0 at AAC@Z(ptr ptr) istream_read_char
@@ -319,7 +319,7 @@
 @ extern ??_7stdiobuf@@6B@ MSVCP_stdiobuf_vtable
 # @ extern ??_7stdiostream@@6B@  # const stdiostream::`vftable'
 @ extern ??_7streambuf@@6B@ MSVCP_streambuf_vtable
-# @ extern ??_7strstream@@6B@  # const strstream::`vftable'
+@ extern ??_7strstream@@6B@ MSVCP_strstream_vtable
 @ extern ??_7strstreambuf@@6B@ MSVCP_strstreambuf_vtable
 # @ extern ??_8fstream@@7Bistream@@@  # const fstream::`vbtable'{for `istream'}
 # @ extern ??_8fstream@@7Bostream@@@  # const fstream::`vbtable'{for `ostream'}
@@ -335,8 +335,8 @@
 @ extern ??_8ostrstream@@7B@ ostream_vbtable
 # @ extern ??_8stdiostream@@7Bistream@@@  # const stdiostream::`vbtable'{for `istream'}
 # @ extern ??_8stdiostream@@7Bostream@@@  # const stdiostream::`vbtable'{for `ostream'}
-# @ extern ??_8strstream@@7Bistream@@@  # const strstream::`vbtable'{for `istream'}
-# @ extern ??_8strstream@@7Bostream@@@  # const strstream::`vbtable'{for `ostream'}
+@ extern ??_8strstream@@7Bistream@@@ iostream_vbtable_istream
+@ extern ??_8strstream@@7Bostream@@@ iostream_vbtable_ostream
 @ stub -arch=win32 ??_Dfstream@@QAEXXZ  # void __thiscall fstream::`vbase destructor'(void)
 @ stub -arch=win64 ??_Dfstream@@QEAAXXZ
 @ stub -arch=win32 ??_Difstream@@QAEXXZ  # void __thiscall ifstream::`vbase destructor'(void)
@@ -359,8 +359,8 @@
 @ cdecl -arch=win64 ??_Dostrstream@@QEAAXXZ(ptr) ostream_vbase_dtor
 @ stub -arch=win32 ??_Dstdiostream@@QAEXXZ  # void __thiscall stdiostream::`vbase destructor'(void)
 @ stub -arch=win64 ??_Dstdiostream@@QEAAXXZ
-@ stub -arch=win32 ??_Dstrstream@@QAEXXZ  # void __thiscall strstream::`vbase destructor'(void)
-@ stub -arch=win64 ??_Dstrstream@@QEAAXXZ
+@ thiscall -arch=win32 ??_Dstrstream@@QAEXXZ(ptr) iostream_vbase_dtor
+@ cdecl -arch=win64 ??_Dstrstream@@QEAAXXZ(ptr) iostream_vbase_dtor
 @ thiscall -arch=win32 ??_Eexception@@UAEPAXI at Z(ptr long) MSVCP_exception_vector_dtor
 @ thiscall -arch=win32 ??_Efilebuf@@UAEPAXI at Z(ptr long) filebuf_vector_dtor
 @ stub -arch=win32 ??_Efstream@@UAEPAXI at Z  # virtual void * __thiscall fstream::`vector deleting destructor'(unsigned int)
@@ -378,7 +378,7 @@
 @ thiscall -arch=win32 ??_Estdiobuf@@UAEPAXI at Z(ptr long) stdiobuf_vector_dtor
 @ stub -arch=win32 ??_Estdiostream@@UAEPAXI at Z  # virtual void * __thiscall stdiostream::`vector deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Estreambuf@@UAEPAXI at Z(ptr long) streambuf_vector_dtor
-@ stub -arch=win32 ??_Estrstream@@UAEPAXI at Z  # virtual void * __thiscall strstream::`vector deleting destructor'(unsigned int)
+@ thiscall -arch=win32 ??_Estrstream@@UAEPAXI at Z(ptr long) iostream_vector_dtor
 @ thiscall -arch=win32 ??_Estrstreambuf@@UAEPAXI at Z(ptr long) strstreambuf_vector_dtor
 @ thiscall -arch=win32 ??_Gexception@@UAEPAXI at Z(ptr long) MSVCP_exception_scalar_dtor
 @ thiscall -arch=win32 ??_Gfilebuf@@UAEPAXI at Z(ptr long) filebuf_scalar_dtor
@@ -397,7 +397,7 @@
 @ thiscall -arch=win32 ??_Gstdiobuf@@UAEPAXI at Z(ptr long) stdiobuf_scalar_dtor
 @ stub -arch=win32 ??_Gstdiostream@@UAEPAXI at Z  # virtual void * __thiscall stdiostream::`scalar deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Gstreambuf@@UAEPAXI at Z(ptr long) streambuf_scalar_dtor
-@ stub -arch=win32 ??_Gstrstream@@UAEPAXI at Z  # virtual void * __thiscall strstream::`scalar deleting destructor'(unsigned int)
+@ thiscall -arch=win32 ??_Gstrstream@@UAEPAXI at Z(ptr long) iostream_scalar_dtor
 @ thiscall -arch=win32 ??_Gstrstreambuf@@UAEPAXI at Z(ptr long) strstreambuf_scalar_dtor
 @ extern ?adjustfield at ios@@2JB ios_adjustfield
 @ thiscall -arch=win32 ?allocate at streambuf@@IAEHXZ(ptr) streambuf_allocate
@@ -593,8 +593,8 @@
 @ cdecl -arch=win64 ?pbump at streambuf@@IEAAXH at Z(ptr long) streambuf_pbump
 @ thiscall -arch=win32 ?pcount at ostrstream@@QBEHXZ(ptr) ostrstream_pcount
 @ cdecl -arch=win64 ?pcount at ostrstream@@QEBAHXZ(ptr) ostrstream_pcount
-@ stub -arch=win32 ?pcount at strstream@@QBEHXZ  # int __thiscall strstream::pcount(void)const 
-@ stub -arch=win64 ?pcount at strstream@@QEBAHXZ
+@ thiscall -arch=win32 ?pcount at strstream@@QBEHXZ(ptr) strstream_pcount
+@ cdecl -arch=win64 ?pcount at strstream@@QEBAHXZ(ptr) strstream_pcount
 @ thiscall -arch=win32 ?peek at istream@@QAEHXZ(ptr) istream_peek
 @ cdecl -arch=win64 ?peek at istream@@QEAAHXZ(ptr) istream_peek
 @ thiscall -arch=win32 ?pptr at streambuf@@IBEPADXZ(ptr) streambuf_pptr
@@ -627,8 +627,8 @@
 @ cdecl -arch=win64 ?rdbuf at ostrstream@@QEBAPEAVstrstreambuf@@XZ(ptr) ostrstream_rdbuf
 @ stub -arch=win32 ?rdbuf at stdiostream@@QBEPAVstdiobuf@@XZ  # class stdiobuf * __thiscall stdiostream::rdbuf(void)const 
 @ stub -arch=win64 ?rdbuf at stdiostream@@QEBAPEAVstdiobuf@@XZ
-@ stub -arch=win32 ?rdbuf at strstream@@QBEPAVstrstreambuf@@XZ  # class strstreambuf * __thiscall strstream::rdbuf(void)const 
-@ stub -arch=win64 ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ
+@ thiscall -arch=win32 ?rdbuf at strstream@@QBEPAVstrstreambuf@@XZ(ptr) strstream_rdbuf
+@ cdecl -arch=win64 ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ(ptr) strstream_rdbuf
 @ thiscall -arch=win32 ?rdstate at ios@@QBEHXZ(ptr) ios_rdstate
 @ cdecl -arch=win64 ?rdstate at ios@@QEBAHXZ(ptr) ios_rdstate
 @ thiscall -arch=win32 ?read at istream@@QAEAAV1 at PACH@Z(ptr ptr long) istream_read
@@ -716,8 +716,8 @@
 @ cdecl -arch=win64 ?str at istrstream@@QEAAPEADXZ(ptr) istrstream_str
 @ thiscall -arch=win32 ?str at ostrstream@@QAEPADXZ(ptr) ostrstream_str
 @ cdecl -arch=win64 ?str at ostrstream@@QEAAPEADXZ(ptr) ostrstream_str
-@ stub -arch=win32 ?str at strstream@@QAEPADXZ  # char * __thiscall strstream::str(void)
-@ stub -arch=win64 ?str at strstream@@QEAAPEADXZ
+@ thiscall -arch=win32 ?str at strstream@@QAEPADXZ(ptr) strstream_str
+@ cdecl -arch=win64 ?str at strstream@@QEAAPEADXZ(ptr) strstream_str
 @ thiscall -arch=win32 ?str at strstreambuf@@QAEPADXZ(ptr) strstreambuf_str
 @ cdecl -arch=win64 ?str at strstreambuf@@QEAAPEADXZ(ptr) strstreambuf_str
 @ extern ?sunk_with_stdio at ios@@0HA ios_sunk_with_stdio
diff --git a/dlls/msvcrt20/msvcrt20.spec b/dlls/msvcrt20/msvcrt20.spec
index 584a85e..4059a47 100644
--- a/dlls/msvcrt20/msvcrt20.spec
+++ b/dlls/msvcrt20/msvcrt20.spec
@@ -102,12 +102,12 @@
 @ cdecl -arch=win64 ??0streambuf@@IEAA at XZ(ptr) msvcirt.??0streambuf@@IEAA at XZ
 @ thiscall -arch=win32 ??0streambuf@@QAE at ABV0@@Z(ptr ptr) msvcirt.??0streambuf@@QAE at ABV0@@Z
 @ cdecl -arch=win64 ??0streambuf@@QEAA at AEBV0@@Z(ptr ptr) msvcirt.??0streambuf@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0strstream@@QAE at ABV0@@Z
-@ stub -arch=win64 ??0strstream@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0strstream@@QAE at PADHH@Z
-@ stub -arch=win64 ??0strstream@@QEAA at PEADHH@Z
-@ stub -arch=win32 ??0strstream@@QAE at XZ
-@ stub -arch=win64 ??0strstream@@QEAA at XZ
+@ thiscall -arch=win32 ??0strstream@@QAE at ABV0@@Z(ptr ptr long) msvcirt.??0strstream@@QAE at ABV0@@Z
+@ cdecl -arch=win64 ??0strstream@@QEAA at AEBV0@@Z(ptr ptr long) msvcirt.??0strstream@@QEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0strstream@@QAE at PADHH@Z(ptr ptr long long long) msvcirt.??0strstream@@QAE at PADHH@Z
+@ cdecl -arch=win64 ??0strstream@@QEAA at PEADHH@Z(ptr ptr long long long) msvcirt.??0strstream@@QEAA at PEADHH@Z
+@ thiscall -arch=win32 ??0strstream@@QAE at XZ(ptr long) msvcirt.??0strstream@@QAE at XZ
+@ cdecl -arch=win64 ??0strstream@@QEAA at XZ(ptr long) msvcirt.??0strstream@@QEAA at XZ
 @ thiscall -arch=win32 ??0strstreambuf@@QAE at ABV0@@Z(ptr ptr) msvcirt.??0strstreambuf@@QAE at ABV0@@Z
 @ cdecl -arch=win64 ??0strstreambuf@@QEAA at AEBV0@@Z(ptr ptr) msvcirt.??0strstreambuf@@QEAA at AEBV0@@Z
 @ thiscall -arch=win32 ??0strstreambuf@@QAE at H@Z(ptr long) msvcirt.??0strstreambuf@@QAE at H@Z
@@ -150,8 +150,8 @@
 @ stub -arch=win64 ??1stdiostream@@UEAA at XZ
 @ thiscall -arch=win32 ??1streambuf@@UAE at XZ(ptr) msvcirt.??1streambuf@@UAE at XZ
 @ cdecl -arch=win64 ??1streambuf@@UEAA at XZ(ptr) msvcirt.??1streambuf@@UEAA at XZ
-@ stub -arch=win32 ??1strstream@@UAE at XZ
-@ stub -arch=win64 ??1strstream@@UEAA at XZ
+@ thiscall -arch=win32 ??1strstream@@UAE at XZ(ptr) msvcirt.??1strstream@@UAE at XZ
+@ cdecl -arch=win64 ??1strstream@@UEAA at XZ(ptr) msvcirt.??1strstream@@UEAA at XZ
 @ thiscall -arch=win32 ??1strstreambuf@@UAE at XZ(ptr) msvcirt.??1strstreambuf@@UAE at XZ
 @ cdecl -arch=win64 ??1strstreambuf@@UEAA at XZ(ptr) msvcirt.??1strstreambuf@@UEAA at XZ
 @ cdecl -arch=win32 ??2 at YAPAXI@Z(long) msvcrt.??2 at YAPAXI@Z
@@ -204,8 +204,8 @@
 @ stub -arch=win64 ??4stdiostream@@QEAAAEAV0 at AEAV0@@Z
 @ thiscall -arch=win32 ??4streambuf@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4streambuf@@QAEAAV0 at ABV0@@Z
 @ cdecl -arch=win64 ??4streambuf@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4streambuf@@QEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4strstream@@QAEAAV0 at AAV0@@Z
-@ stub -arch=win64 ??4strstream@@QEAAAEAV0 at AEAV0@@Z
+@ thiscall -arch=win32 ??4strstream@@QAEAAV0 at AAV0@@Z(ptr ptr) msvcirt.??4strstream@@QAEAAV0 at AAV0@@Z
+@ cdecl -arch=win64 ??4strstream@@QEAAAEAV0 at AEAV0@@Z(ptr ptr) msvcirt.??4strstream@@QEAAAEAV0 at AEAV0@@Z
 @ thiscall -arch=win32 ??4strstreambuf@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4strstreambuf@@QAEAAV0 at ABV0@@Z
 @ cdecl -arch=win64 ??4strstreambuf@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4strstreambuf@@QEAAAEAV0 at AEBV0@@Z
 @ thiscall -arch=win32 ??5istream@@QAEAAV0 at AAC@Z(ptr ptr) msvcirt.??5istream@@QAEAAV0 at AAC@Z
@@ -301,7 +301,7 @@
 @ extern ??_7stdiobuf@@6B@ msvcirt.??_7stdiobuf@@6B@
 # @ extern ??_7stdiostream@@6B@
 @ extern ??_7streambuf@@6B@ msvcirt.??_7streambuf@@6B@
-# @ extern ??_7strstream@@6B@
+@ extern ??_7strstream@@6B@ msvcirt.??_7strstream@@6B@
 @ extern ??_7strstreambuf@@6B@ msvcirt.??_7strstreambuf@@6B@
 # @ extern ??_8fstream@@7Bistream@@@
 # @ extern ??_8fstream@@7Bostream@@@
@@ -317,8 +317,8 @@
 @ extern ??_8ostrstream@@7B@ msvcirt.??_8ostrstream@@7B@
 # @ extern ??_8stdiostream@@7Bistream@@@
 # @ extern ??_8stdiostream@@7Bostream@@@
-# @ extern ??_8strstream@@7Bistream@@@
-# @ extern ??_8strstream@@7Bostream@@@
+@ extern ??_8strstream@@7Bistream@@@ msvcirt.??_8strstream@@7Bistream@@@
+@ extern ??_8strstream@@7Bostream@@@ msvcirt.??_8strstream@@7Bostream@@@
 @ stub -arch=win32 ??_Dfstream@@QAEXXZ
 @ stub -arch=win64 ??_Dfstream@@QEAAXXZ
 @ stub -arch=win32 ??_Difstream@@QAEXXZ
@@ -341,8 +341,8 @@
 @ cdecl -arch=win64 ??_Dostrstream@@QEAAXXZ(ptr) msvcirt.??_Dostrstream@@QEAAXXZ
 @ stub -arch=win32 ??_Dstdiostream@@QAEXXZ
 @ stub -arch=win64 ??_Dstdiostream@@QEAAXXZ
-@ stub -arch=win32 ??_Dstrstream@@QAEXXZ
-@ stub -arch=win64 ??_Dstrstream@@QEAAXXZ
+@ thiscall -arch=win32 ??_Dstrstream@@QAEXXZ(ptr) msvcirt.??_Dstrstream@@QAEXXZ
+@ cdecl -arch=win64 ??_Dstrstream@@QEAAXXZ(ptr) msvcirt.??_Dstrstream@@QEAAXXZ
 @ stub -arch=win32 ??_EIostream_init@@QAEPAXI at Z
 @ thiscall -arch=win32 ??_Efilebuf@@UAEPAXI at Z(ptr long) msvcirt.??_Efilebuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Efstream@@UAEPAXI at Z
@@ -359,7 +359,7 @@
 @ thiscall -arch=win32 ??_Estdiobuf@@UAEPAXI at Z(ptr long) msvcirt.??_Estdiobuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Estdiostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Estreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Estreambuf@@UAEPAXI at Z
-@ stub -arch=win32 ??_Estrstream@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Estrstream@@UAEPAXI at Z(ptr long) msvcirt.??_Estrstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Estrstreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Estrstreambuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_GIostream_init@@QAEPAXI at Z
 @ thiscall -arch=win32 ??_Gfilebuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gfilebuf@@UAEPAXI at Z
@@ -377,7 +377,7 @@
 @ thiscall -arch=win32 ??_Gstdiobuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gstdiobuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gstdiostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gstreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gstreambuf@@UAEPAXI at Z
-@ stub -arch=win32 ??_Gstrstream@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Gstrstream@@UAEPAXI at Z(ptr long) msvcirt.??_Gstrstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gstrstreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gstrstreambuf@@UAEPAXI at Z
 @ cdecl -arch=win32 ?_query_new_handler@@YAP6AHI at ZXZ() msvcrt.?_query_new_handler@@YAP6AHI at ZXZ
 @ cdecl -arch=win64 ?_query_new_handler@@YAP6AH_K at ZXZ() msvcrt.?_query_new_handler@@YAP6AH_K at ZXZ
@@ -579,8 +579,8 @@
 @ cdecl -arch=win64 ?pbump at streambuf@@IEAAXH at Z(ptr long) msvcirt.?pbump at streambuf@@IEAAXH at Z
 @ thiscall -arch=win32 ?pcount at ostrstream@@QBEHXZ(ptr) msvcirt.?pcount at ostrstream@@QBEHXZ
 @ cdecl -arch=win64 ?pcount at ostrstream@@QEBAHXZ(ptr) msvcirt.?pcount at ostrstream@@QEBAHXZ
-@ stub -arch=win32 ?pcount at strstream@@QBEHXZ
-@ stub -arch=win64 ?pcount at strstream@@QEBAHXZ
+@ thiscall -arch=win32 ?pcount at strstream@@QBEHXZ(ptr) msvcirt.?pcount at strstream@@QBEHXZ
+@ cdecl -arch=win64 ?pcount at strstream@@QEBAHXZ(ptr) msvcirt.?pcount at strstream@@QEBAHXZ
 @ thiscall -arch=win32 ?peek at istream@@QAEHXZ(ptr) msvcirt.?peek at istream@@QAEHXZ
 @ cdecl -arch=win64 ?peek at istream@@QEAAHXZ(ptr) msvcirt.?peek at istream@@QEAAHXZ
 @ thiscall -arch=win32 ?pptr at streambuf@@IBEPADXZ(ptr) msvcirt.?pptr at streambuf@@IBEPADXZ
@@ -613,8 +613,8 @@
 @ cdecl -arch=win64 ?rdbuf at ostrstream@@QEBAPEAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf at ostrstream@@QEBAPEAVstrstreambuf@@XZ
 @ stub -arch=win32 ?rdbuf at stdiostream@@QBEPAVstdiobuf@@XZ
 @ stub -arch=win64 ?rdbuf at stdiostream@@QEBAPEAVstdiobuf@@XZ
-@ stub -arch=win32 ?rdbuf at strstream@@QBEPAVstrstreambuf@@XZ
-@ stub -arch=win64 ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ
+@ thiscall -arch=win32 ?rdbuf at strstream@@QBEPAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf at strstream@@QBEPAVstrstreambuf@@XZ
+@ cdecl -arch=win64 ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ
 @ thiscall -arch=win32 ?rdstate at ios@@QBEHXZ(ptr) msvcirt.?rdstate at ios@@QBEHXZ
 @ cdecl -arch=win64 ?rdstate at ios@@QEBAHXZ(ptr) msvcirt.?rdstate at ios@@QEBAHXZ
 @ thiscall -arch=win32 ?read at istream@@QAEAAV1 at PACH@Z(ptr ptr long) msvcirt.?read at istream@@QAEAAV1 at PACH@Z
@@ -704,8 +704,8 @@
 @ cdecl -arch=win64 ?str at istrstream@@QEAAPEADXZ(ptr) msvcirt.?str at istrstream@@QEAAPEADXZ
 @ thiscall -arch=win32 ?str at ostrstream@@QAEPADXZ(ptr) msvcirt.?str at ostrstream@@QAEPADXZ
 @ cdecl -arch=win64 ?str at ostrstream@@QEAAPEADXZ(ptr) msvcirt.?str at ostrstream@@QEAAPEADXZ
-@ stub -arch=win32 ?str at strstream@@QAEPADXZ
-@ stub -arch=win64 ?str at strstream@@QEAAPEADXZ
+@ thiscall -arch=win32 ?str at strstream@@QAEPADXZ(ptr) msvcirt.?str at strstream@@QAEPADXZ
+@ cdecl -arch=win64 ?str at strstream@@QEAAPEADXZ(ptr) msvcirt.?str at strstream@@QEAAPEADXZ
 @ thiscall -arch=win32 ?str at strstreambuf@@QAEPADXZ(ptr) msvcirt.?str at strstreambuf@@QAEPADXZ
 @ cdecl -arch=win64 ?str at strstreambuf@@QEAAPEADXZ(ptr) msvcirt.?str at strstreambuf@@QEAAPEADXZ
 @ extern ?sunk_with_stdio at ios@@0HA msvcirt.?sunk_with_stdio at ios@@0HA
diff --git a/dlls/msvcrt40/msvcrt40.spec b/dlls/msvcrt40/msvcrt40.spec
index 7c83691..40b6eab 100644
--- a/dlls/msvcrt40/msvcrt40.spec
+++ b/dlls/msvcrt40/msvcrt40.spec
@@ -124,12 +124,12 @@
 @ cdecl -arch=win64 ??0streambuf@@IEAA at XZ(ptr) msvcirt.??0streambuf@@IEAA at XZ
 @ thiscall -arch=win32 ??0streambuf@@QAE at ABV0@@Z(ptr ptr) msvcirt.??0streambuf@@QAE at ABV0@@Z
 @ cdecl -arch=win64 ??0streambuf@@QEAA at AEBV0@@Z(ptr ptr) msvcirt.??0streambuf@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0strstream@@QAE at ABV0@@Z
-@ stub -arch=win64 ??0strstream@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0strstream@@QAE at PADHH@Z
-@ stub -arch=win64 ??0strstream@@QEAA at PEADHH@Z
-@ stub -arch=win32 ??0strstream@@QAE at XZ
-@ stub -arch=win64 ??0strstream@@QEAA at XZ
+@ thiscall -arch=win32 ??0strstream@@QAE at ABV0@@Z(ptr ptr long) msvcirt.??0strstream@@QAE at ABV0@@Z
+@ cdecl -arch=win64 ??0strstream@@QEAA at AEBV0@@Z(ptr ptr long) msvcirt.??0strstream@@QEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0strstream@@QAE at PADHH@Z(ptr ptr long long long) msvcirt.??0strstream@@QAE at PADHH@Z
+@ cdecl -arch=win64 ??0strstream@@QEAA at PEADHH@Z(ptr ptr long long long) msvcirt.??0strstream@@QEAA at PEADHH@Z
+@ thiscall -arch=win32 ??0strstream@@QAE at XZ(ptr long) msvcirt.??0strstream@@QAE at XZ
+@ cdecl -arch=win64 ??0strstream@@QEAA at XZ(ptr long) msvcirt.??0strstream@@QEAA at XZ
 @ thiscall -arch=win32 ??0strstreambuf@@QAE at ABV0@@Z(ptr ptr) msvcirt.??0strstreambuf@@QAE at ABV0@@Z
 @ cdecl -arch=win64 ??0strstreambuf@@QEAA at AEBV0@@Z(ptr ptr) msvcirt.??0strstreambuf@@QEAA at AEBV0@@Z
 @ thiscall -arch=win32 ??0strstreambuf@@QAE at H@Z(ptr long) msvcirt.??0strstreambuf@@QAE at H@Z
@@ -182,8 +182,8 @@
 @ stub -arch=win64 ??1stdiostream@@UEAA at XZ
 @ thiscall -arch=win32 ??1streambuf@@UAE at XZ(ptr) msvcirt.??1streambuf@@UAE at XZ
 @ cdecl -arch=win64 ??1streambuf@@UEAA at XZ(ptr) msvcirt.??1streambuf@@UEAA at XZ
-@ stub -arch=win32 ??1strstream@@UAE at XZ
-@ stub -arch=win64 ??1strstream@@UEAA at XZ
+@ thiscall -arch=win32 ??1strstream@@UAE at XZ(ptr) msvcirt.??1strstream@@UAE at XZ
+@ cdecl -arch=win64 ??1strstream@@UEAA at XZ(ptr) msvcirt.??1strstream@@UEAA at XZ
 @ thiscall -arch=win32 ??1strstreambuf@@UAE at XZ(ptr) msvcirt.??1strstreambuf@@UAE at XZ
 @ cdecl -arch=win64 ??1strstreambuf@@UEAA at XZ(ptr) msvcirt.??1strstreambuf@@UEAA at XZ
 @ thiscall -arch=i386 ??1type_info@@UAE at XZ(ptr) msvcrt.??1type_info@@UAE at XZ
@@ -248,8 +248,8 @@
 @ stub -arch=win64 ??4stdiostream@@QEAAAEAV0 at AEAV0@@Z
 @ thiscall -arch=win32 ??4streambuf@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4streambuf@@QAEAAV0 at ABV0@@Z
 @ cdecl -arch=win64 ??4streambuf@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4streambuf@@QEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4strstream@@QAEAAV0 at AAV0@@Z
-@ stub -arch=win64 ??4strstream@@QEAAAEAV0 at AEAV0@@Z
+@ thiscall -arch=win32 ??4strstream@@QAEAAV0 at AAV0@@Z(ptr ptr) msvcirt.??4strstream@@QAEAAV0 at AAV0@@Z
+@ cdecl -arch=win64 ??4strstream@@QEAAAEAV0 at AEAV0@@Z(ptr ptr) msvcirt.??4strstream@@QEAAAEAV0 at AEAV0@@Z
 @ thiscall -arch=win32 ??4strstreambuf@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4strstreambuf@@QAEAAV0 at ABV0@@Z
 @ cdecl -arch=win64 ??4strstreambuf@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4strstreambuf@@QEAAAEAV0 at AEBV0@@Z
 @ thiscall -arch=win32 ??5istream@@QAEAAV0 at AAC@Z(ptr ptr) msvcirt.??5istream@@QAEAAV0 at AAC@Z
@@ -354,7 +354,7 @@
 @ extern ??_7stdiobuf@@6B@ msvcirt.??_7stdiobuf@@6B@
 # @ extern ??_7stdiostream@@6B@
 @ extern ??_7streambuf@@6B@ msvcirt.??_7streambuf@@6B@
-# @ extern ??_7strstream@@6B@
+@ extern ??_7strstream@@6B@ msvcirt.??_7strstream@@6B@
 @ extern ??_7strstreambuf@@6B@ msvcirt.??_7strstreambuf@@6B@
 # @ extern ??_8fstream@@7Bistream@@@
 # @ extern ??_8fstream@@7Bostream@@@
@@ -370,8 +370,8 @@
 @ extern ??_8ostrstream@@7B@ msvcirt.??_8ostrstream@@7B@
 # @ extern ??_8stdiostream@@7Bistream@@@
 # @ extern ??_8stdiostream@@7Bostream@@@
-# @ extern ??_8strstream@@7Bistream@@@
-# @ extern ??_8strstream@@7Bostream@@@
+@ extern ??_8strstream@@7Bistream@@@ msvcirt.??_8strstream@@7Bistream@@@
+@ extern ??_8strstream@@7Bostream@@@ msvcirt.??_8strstream@@7Bostream@@@
 @ stub -arch=win32 ??_Dfstream@@QAEXXZ
 @ stub -arch=win64 ??_Dfstream@@QEAAXXZ
 @ stub -arch=win32 ??_Difstream@@QAEXXZ
@@ -394,8 +394,8 @@
 @ cdecl -arch=win64 ??_Dostrstream@@QEAAXXZ(ptr) msvcirt.??_Dostrstream@@QEAAXXZ
 @ stub -arch=win32 ??_Dstdiostream@@QAEXXZ
 @ stub -arch=win64 ??_Dstdiostream@@QEAAXXZ
-@ stub -arch=win32 ??_Dstrstream@@QAEXXZ
-@ stub -arch=win64 ??_Dstrstream@@QEAAXXZ
+@ thiscall -arch=win32 ??_Dstrstream@@QAEXXZ(ptr) msvcirt.??_Dstrstream@@QAEXXZ
+@ cdecl -arch=win64 ??_Dstrstream@@QEAAXXZ(ptr) msvcirt.??_Dstrstream@@QEAAXXZ
 @ stub -arch=win32 ??_EIostream_init@@QAEPAXI at Z
 @ thiscall -arch=win32 ??_E__non_rtti_object@@UAEPAXI at Z(ptr long) msvcrt.??_E__non_rtti_object@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Ebad_cast@@UAEPAXI at Z(ptr long) msvcrt.??_Ebad_cast@@UAEPAXI at Z
@@ -417,7 +417,7 @@
 @ thiscall -arch=win32 ??_Estdiobuf@@UAEPAXI at Z(ptr long) msvcirt.??_Estdiobuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Estdiostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Estreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Estreambuf@@UAEPAXI at Z
-@ stub -arch=win32 ??_Estrstream@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Estrstream@@UAEPAXI at Z(ptr long) msvcirt.??_Estrstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Estrstreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Estrstreambuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_GIostream_init@@QAEPAXI at Z
 @ thiscall -arch=win32 ??_G__non_rtti_object@@UAEPAXI at Z(ptr long) msvcrt.??_G__non_rtti_object@@UAEPAXI at Z
@@ -440,7 +440,7 @@
 @ thiscall -arch=win32 ??_Gstdiobuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gstdiobuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gstdiostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gstreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gstreambuf@@UAEPAXI at Z
-@ stub -arch=win32 ??_Gstrstream@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Gstrstream@@UAEPAXI at Z(ptr long) msvcirt.??_Gstrstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gstrstreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gstrstreambuf@@UAEPAXI at Z
 @ cdecl -arch=win32 ?_query_new_handler@@YAP6AHI at ZXZ() msvcrt.?_query_new_handler@@YAP6AHI at ZXZ
 @ cdecl -arch=win64 ?_query_new_handler@@YAP6AH_K at ZXZ() msvcrt.?_query_new_handler@@YAP6AH_K at ZXZ
@@ -648,8 +648,8 @@
 @ cdecl -arch=win64 ?pbump at streambuf@@IEAAXH at Z(ptr long) msvcirt.?pbump at streambuf@@IEAAXH at Z
 @ thiscall -arch=win32 ?pcount at ostrstream@@QBEHXZ(ptr) msvcirt.?pcount at ostrstream@@QBEHXZ
 @ cdecl -arch=win64 ?pcount at ostrstream@@QEBAHXZ(ptr) msvcirt.?pcount at ostrstream@@QEBAHXZ
-@ stub -arch=win32 ?pcount at strstream@@QBEHXZ
-@ stub -arch=win64 ?pcount at strstream@@QEBAHXZ
+@ thiscall -arch=win32 ?pcount at strstream@@QBEHXZ(ptr) msvcirt.?pcount at strstream@@QBEHXZ
+@ cdecl -arch=win64 ?pcount at strstream@@QEBAHXZ(ptr) msvcirt.?pcount at strstream@@QEBAHXZ
 @ thiscall -arch=win32 ?peek at istream@@QAEHXZ(ptr) msvcirt.?peek at istream@@QAEHXZ
 @ cdecl -arch=win64 ?peek at istream@@QEAAHXZ(ptr) msvcirt.?peek at istream@@QEAAHXZ
 @ thiscall -arch=win32 ?pptr at streambuf@@IBEPADXZ(ptr) msvcirt.?pptr at streambuf@@IBEPADXZ
@@ -684,8 +684,8 @@
 @ cdecl -arch=win64 ?rdbuf at ostrstream@@QEBAPEAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf at ostrstream@@QEBAPEAVstrstreambuf@@XZ
 @ stub -arch=win32 ?rdbuf at stdiostream@@QBEPAVstdiobuf@@XZ
 @ stub -arch=win64 ?rdbuf at stdiostream@@QEBAPEAVstdiobuf@@XZ
-@ stub -arch=win32 ?rdbuf at strstream@@QBEPAVstrstreambuf@@XZ
-@ stub -arch=win64 ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ
+@ thiscall -arch=win32 ?rdbuf at strstream@@QBEPAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf at strstream@@QBEPAVstrstreambuf@@XZ
+@ cdecl -arch=win64 ?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf at strstream@@QEBAPEAVstrstreambuf@@XZ
 @ thiscall -arch=win32 ?rdstate at ios@@QBEHXZ(ptr) msvcirt.?rdstate at ios@@QBEHXZ
 @ cdecl -arch=win64 ?rdstate at ios@@QEBAHXZ(ptr) msvcirt.?rdstate at ios@@QEBAHXZ
 @ thiscall -arch=win32 ?read at istream@@QAEAAV1 at PACH@Z(ptr ptr long) msvcirt.?read at istream@@QAEAAV1 at PACH@Z
@@ -776,8 +776,8 @@
 @ cdecl -arch=win64 ?str at istrstream@@QEAAPEADXZ(ptr) msvcirt.?str at istrstream@@QEAAPEADXZ
 @ thiscall -arch=win32 ?str at ostrstream@@QAEPADXZ(ptr) msvcirt.?str at ostrstream@@QAEPADXZ
 @ cdecl -arch=win64 ?str at ostrstream@@QEAAPEADXZ(ptr) msvcirt.?str at ostrstream@@QEAAPEADXZ
-@ stub -arch=win32 ?str at strstream@@QAEPADXZ
-@ stub -arch=win64 ?str at strstream@@QEAAPEADXZ
+@ thiscall -arch=win32 ?str at strstream@@QAEPADXZ(ptr) msvcirt.?str at strstream@@QAEPADXZ
+@ cdecl -arch=win64 ?str at strstream@@QEAAPEADXZ(ptr) msvcirt.?str at strstream@@QEAAPEADXZ
 @ thiscall -arch=win32 ?str at strstreambuf@@QAEPADXZ(ptr) msvcirt.?str at strstreambuf@@QAEPADXZ
 @ cdecl -arch=win64 ?str at strstreambuf@@QEAAPEADXZ(ptr) msvcirt.?str at strstreambuf@@QEAAPEADXZ
 @ extern ?sunk_with_stdio at ios@@0HA msvcirt.?sunk_with_stdio at ios@@0HA
-- 
2.7.4




More information about the wine-patches mailing list