[5/6] msvcirt: Add a partial implementation of class istrstream.

Iván Matellanes matellanesivan at gmail.com
Wed Oct 19 07:00:55 CDT 2016


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

diff --git a/dlls/msvcirt/msvcirt.c b/dlls/msvcirt/msvcirt.c
index ffa7b93..a711ca9 100644
--- a/dlls/msvcirt/msvcirt.c
+++ b/dlls/msvcirt/msvcirt.c
@@ -191,6 +191,8 @@ extern const vtable_ptr MSVCP_ostrstream_vtable;
 extern const vtable_ptr MSVCP_istream_vtable;
 /* ??_7istream_withassign@@6B@ */
 extern const vtable_ptr MSVCP_istream_withassign_vtable;
+/* ??_7istrstream@@6B@ */
+extern const vtable_ptr MSVCP_istrstream_vtable;
 /* ??_7iostream@@6B@ */
 extern const vtable_ptr MSVCP_iostream_vtable;
 
@@ -257,6 +259,8 @@ void __asm_dummy_vtables(void) {
             VTABLE_ADD_FUNC(istream_vector_dtor));
     __ASM_VTABLE(istream_withassign,
             VTABLE_ADD_FUNC(istream_vector_dtor));
+    __ASM_VTABLE(istrstream,
+            VTABLE_ADD_FUNC(istream_vector_dtor));
     __ASM_VTABLE(iostream,
             VTABLE_ADD_FUNC(iostream_vector_dtor));
 #ifndef __GNUC__
@@ -272,6 +276,7 @@ void __asm_dummy_vtables(void) {
 const int ostream_vbtable[] = {0, VBTABLE_ENTRY(ostream, FIELD_OFFSET(ostream, vbtable), ios)};
 /* ??_8istream@@7B@ */
 /* ??_8istream_withassign@@7B@ */
+/* ??_8istrstream@@7B@ */
 const int istream_vbtable[] = {0, VBTABLE_ENTRY(istream, FIELD_OFFSET(istream, vbtable), ios)};
 /* ??_8iostream@@7Bistream@@@ */
 const int iostream_vbtable_istream[] = {0, VBTABLE_ENTRY(iostream, FIELD_OFFSET(iostream, base1), ios)};
@@ -291,6 +296,8 @@ DEFINE_RTTI_DATA2(ostrstream, sizeof(ostream),
 DEFINE_RTTI_DATA1(istream, sizeof(istream), &ios_rtti_base_descriptor, ".?AVistream@@")
 DEFINE_RTTI_DATA2(istream_withassign, sizeof(istream),
     &istream_rtti_base_descriptor, &ios_rtti_base_descriptor, ".?AVistream_withassign@@")
+DEFINE_RTTI_DATA2(istrstream, sizeof(istream),
+    &istream_rtti_base_descriptor, &ios_rtti_base_descriptor, ".?AVistrstream@@")
 DEFINE_RTTI_DATA4(iostream, sizeof(iostream),
     &istream_rtti_base_descriptor, &ios_rtti_base_descriptor,
     &ostream_rtti_base_descriptor, &ios_rtti_base_descriptor, ".?AViostream@@")
@@ -3091,6 +3098,8 @@ istream* __thiscall istream_copy_ctor(istream *this, const istream *copy, BOOL v
 /* ??1istream@@UEAA at XZ */
 /* ??1istream_withassign@@UAE at XZ */
 /* ??1istream_withassign@@UEAA at XZ */
+/* ??1istrstream@@UAE at XZ */
+/* ??1istrstream@@UEAA at XZ */
 DEFINE_THISCALL_WRAPPER(istream_dtor, 4)
 void __thiscall istream_dtor(ios *base)
 {
@@ -3128,6 +3137,8 @@ istream* __thiscall istream_assign_sb(istream *this, streambuf *sb)
 /* ??4istream_withassign@@QEAAAEAV0 at AEBV0@@Z */
 /* ??4istream_withassign@@QAEAAVistream@@ABV1@@Z */
 /* ??4istream_withassign@@QEAAAEAVistream@@AEBV1@@Z */
+/* ??4istrstream@@QAEAAV0 at ABV0@@Z */
+/* ??4istrstream@@QEAAAEAV0 at AEBV0@@Z */
 DEFINE_THISCALL_WRAPPER(istream_assign, 8)
 istream* __thiscall istream_assign(istream *this, const istream *rhs)
 {
@@ -3138,6 +3149,8 @@ istream* __thiscall istream_assign(istream *this, const istream *rhs)
 /* ??_Distream@@QEAAXXZ */
 /* ??_Distream_withassign@@QAEXXZ */
 /* ??_Distream_withassign@@QEAAXXZ */
+/* ??_Distrstream@@QAEXXZ */
+/* ??_Distrstream@@QEAAXXZ */
 DEFINE_THISCALL_WRAPPER(istream_vbase_dtor, 4)
 void __thiscall istream_vbase_dtor(istream *this)
 {
@@ -3151,6 +3164,7 @@ void __thiscall istream_vbase_dtor(istream *this)
 
 /* ??_Eistream@@UAEPAXI at Z */
 /* ??_Eistream_withassign@@UAEPAXI at Z */
+/* ??_Eistrstream@@UAEPAXI at Z */
 DEFINE_THISCALL_WRAPPER(istream_vector_dtor, 8)
 istream* __thiscall istream_vector_dtor(ios *base, unsigned int flags)
 {
@@ -3175,6 +3189,7 @@ istream* __thiscall istream_vector_dtor(ios *base, unsigned int flags)
 
 /* ??_Gistream@@UAEPAXI at Z */
 /* ??_Gistream_withassign@@UAEPAXI at Z */
+/* ??_Gistrstream@@UAEPAXI at Z */
 DEFINE_THISCALL_WRAPPER(istream_scalar_dtor, 8)
 istream* __thiscall istream_scalar_dtor(ios *base, unsigned int flags)
 {
@@ -4005,6 +4020,49 @@ istream* __thiscall istream_withassign_ctor(istream *this, BOOL virt_init)
     return this;
 }
 
+/* ??0istrstream@@QAE at ABV0@@Z */
+/* ??0istrstream@@QEAA at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(istrstream_copy_ctor, 12)
+istream* __thiscall istrstream_copy_ctor(istream *this, const istream *copy, BOOL virt_init)
+{
+    FIXME("(%p %p %d) stub\n", this, copy, virt_init);
+    return this;
+}
+
+/* ??0istrstream@@QAE at PADH@Z */
+/* ??0istrstream@@QEAA at PEADH@Z */
+DEFINE_THISCALL_WRAPPER(istrstream_buffer_ctor, 16)
+istream* __thiscall istrstream_buffer_ctor(istream *this, char *buffer, int length, BOOL virt_init)
+{
+    FIXME("(%p %p %d %d) stub\n", this, buffer, length, virt_init);
+    return this;
+}
+
+/* ??0istrstream@@QAE at PAD@Z */
+/* ??0istrstream@@QEAA at PEAD@Z */
+DEFINE_THISCALL_WRAPPER(istrstream_str_ctor, 12)
+istream* __thiscall istrstream_str_ctor(istream *this, char *str, BOOL virt_init)
+{
+    FIXME("(%p %p %d) stub\n", this, str, virt_init);
+    return this;
+}
+
+/* ?rdbuf at istrstream@@QBEPAVstrstreambuf@@XZ */
+/* ?rdbuf at istrstream@@QEBAPEAVstrstreambuf@@XZ */
+DEFINE_THISCALL_WRAPPER(istrstream_rdbuf, 4)
+strstreambuf* __thiscall istrstream_rdbuf(const istream *this)
+{
+    return (strstreambuf*) istream_get_ios(this)->sb;
+}
+
+/* ?str at istrstream@@QAEPADXZ */
+/* ?str at istrstream@@QEAAPEADXZ */
+DEFINE_THISCALL_WRAPPER(istrstream_str, 4)
+char* __thiscall istrstream_str(istream *this)
+{
+    return strstreambuf_str(istrstream_rdbuf(this));
+}
+
 static inline ios* iostream_to_ios(const iostream *this)
 {
     return (ios*)((char*)this + iostream_vbtable_istream[1]);
@@ -4290,6 +4348,7 @@ static void init_io(void *base)
     init_ostrstream_rtti(base);
     init_istream_rtti(base);
     init_istream_withassign_rtti(base);
+    init_istrstream_rtti(base);
     init_iostream_rtti(base);
 #endif
 
diff --git a/dlls/msvcirt/msvcirt.spec b/dlls/msvcirt/msvcirt.spec
index 5b09a3d..598d42a 100644
--- a/dlls/msvcirt/msvcirt.spec
+++ b/dlls/msvcirt/msvcirt.spec
@@ -60,12 +60,12 @@
 @ cdecl -arch=win64 ??0istream_withassign@@QEAA at PEAVstreambuf@@@Z(ptr ptr long) istream_withassign_sb_ctor
 @ thiscall -arch=win32 ??0istream_withassign@@QAE at XZ(ptr long) istream_withassign_ctor
 @ cdecl -arch=win64 ??0istream_withassign@@QEAA at XZ(ptr long) istream_withassign_ctor
-@ stub -arch=win32 ??0istrstream@@QAE at ABV0@@Z  # __thiscall istrstream::istrstream(class istrstream const &)
-@ stub -arch=win64 ??0istrstream@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0istrstream@@QAE at PAD@Z  # __thiscall istrstream::istrstream(char *)
-@ stub -arch=win64 ??0istrstream@@QEAA at PEAD@Z
-@ stub -arch=win32 ??0istrstream@@QAE at PADH@Z  # __thiscall istrstream::istrstream(char *,int)
-@ stub -arch=win64 ??0istrstream@@QEAA at PEADH@Z
+@ thiscall -arch=win32 ??0istrstream@@QAE at ABV0@@Z(ptr ptr long) istrstream_copy_ctor
+@ cdecl -arch=win64 ??0istrstream@@QEAA at AEBV0@@Z(ptr ptr long) istrstream_copy_ctor
+@ thiscall -arch=win32 ??0istrstream@@QAE at PAD@Z(ptr ptr long) istrstream_str_ctor
+@ cdecl -arch=win64 ??0istrstream@@QEAA at PEAD@Z(ptr ptr long) istrstream_str_ctor
+@ thiscall -arch=win32 ??0istrstream@@QAE at PADH@Z(ptr ptr long long) istrstream_buffer_ctor
+@ cdecl -arch=win64 ??0istrstream@@QEAA at PEADH@Z(ptr ptr long long) istrstream_buffer_ctor
 @ thiscall -arch=win32 ??0logic_error@@QAE at ABQBD@Z(ptr ptr) MSVCP_logic_error_ctor
 @ cdecl -arch=win64 ??0logic_error@@QEAA at AEBQEBD@Z(ptr ptr) MSVCP_logic_error_ctor
 @ thiscall -arch=win32 ??0logic_error@@QAE at ABV0@@Z(ptr ptr) MSVCP_logic_error_copy_ctor
@@ -148,8 +148,8 @@
 @ cdecl -arch=win64 ??1istream@@UEAA at XZ(ptr) istream_dtor
 @ thiscall -arch=win32 ??1istream_withassign@@UAE at XZ(ptr) istream_dtor
 @ cdecl -arch=win64 ??1istream_withassign@@UEAA at XZ(ptr) istream_dtor
-@ stub -arch=win32 ??1istrstream@@UAE at XZ  # virtual __thiscall istrstream::~istrstream(void)
-@ stub -arch=win64 ??1istrstream@@UEAA at XZ
+@ thiscall -arch=win32 ??1istrstream@@UAE at XZ(ptr) istream_dtor
+@ cdecl -arch=win64 ??1istrstream@@UEAA at XZ(ptr) istream_dtor
 @ thiscall -arch=win32 ??1logic_error@@UAE at XZ(ptr) MSVCP_logic_error_dtor
 @ cdecl -arch=win64 ??1logic_error@@UEAA at XZ(ptr) MSVCP_logic_error_dtor
 @ stub -arch=win32 ??1ofstream@@UAE at XZ  # virtual __thiscall ofstream::~ofstream(void)
@@ -196,8 +196,8 @@
 @ cdecl -arch=win64 ??4istream_withassign@@QEAAAEAVistream@@AEBV1@@Z(ptr ptr) istream_assign
 @ thiscall -arch=win32 ??4istream_withassign@@QAEAAVistream@@PAVstreambuf@@@Z(ptr ptr) istream_assign_sb
 @ cdecl -arch=win64 ??4istream_withassign@@QEAAAEAVistream@@PEAVstreambuf@@@Z(ptr ptr) istream_assign_sb
-@ stub -arch=win32 ??4istrstream@@QAEAAV0 at ABV0@@Z  # class istrstream & __thiscall istrstream::operator=(class istrstream const &)
-@ stub -arch=win64 ??4istrstream@@QEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4istrstream@@QAEAAV0 at ABV0@@Z(ptr ptr) istream_assign
+@ cdecl -arch=win64 ??4istrstream@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) istream_assign
 @ thiscall -arch=win32 ??4logic_error@@QAEAAV0 at ABV0@@Z(ptr ptr) MSVCP_logic_error_assign
 @ cdecl -arch=win64 ??4logic_error@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) MSVCP_logic_error_assign
 @ stub -arch=win32 ??4ofstream@@QAEAAV0 at ABV0@@Z  # class ofstream & __thiscall ofstream::operator=(class ofstream const &)
@@ -310,7 +310,7 @@
 @ extern ??_7iostream@@6B@ MSVCP_iostream_vtable
 @ extern ??_7istream@@6B@ MSVCP_istream_vtable
 @ extern ??_7istream_withassign@@6B@ MSVCP_istream_vtable
-# @ extern ??_7istrstream@@6B@  # const istrstream::`vftable'
+@ extern ??_7istrstream@@6B@ MSVCP_istrstream_vtable
 @ extern ??_7logic_error@@6B@ MSVCP_logic_error_vtable
 # @ extern ??_7ofstream@@6B@  # const ofstream::`vftable'
 @ extern ??_7ostream@@6B@ MSVCP_ostream_vtable
@@ -328,7 +328,7 @@
 @ extern ??_8iostream@@7Bostream@@@ iostream_vbtable_ostream
 @ extern ??_8istream@@7B@ istream_vbtable
 @ extern ??_8istream_withassign@@7B@ istream_vbtable
-# @ extern ??_8istrstream@@7B@  # const istrstream::`vbtable'
+@ extern ??_8istrstream@@7B@ istream_vbtable
 # @ extern ??_8ofstream@@7B@  # const ofstream::`vbtable'
 @ extern ??_8ostream@@7B@ ostream_vbtable
 @ extern ??_8ostream_withassign@@7B@ ostream_vbtable
@@ -347,8 +347,8 @@
 @ cdecl -arch=win64 ??_Distream@@QEAAXXZ(ptr) istream_vbase_dtor
 @ thiscall -arch=win32 ??_Distream_withassign@@QAEXXZ(ptr) istream_vbase_dtor
 @ cdecl -arch=win64 ??_Distream_withassign@@QEAAXXZ(ptr) istream_vbase_dtor
-@ stub -arch=win32 ??_Distrstream@@QAEXXZ  # void __thiscall istrstream::`vbase destructor'(void)
-@ stub -arch=win64 ??_Distrstream@@QEAAXXZ
+@ thiscall -arch=win32 ??_Distrstream@@QAEXXZ(ptr) istream_vbase_dtor
+@ cdecl -arch=win64 ??_Distrstream@@QEAAXXZ(ptr) istream_vbase_dtor
 @ stub -arch=win32 ??_Dofstream@@QAEXXZ  # void __thiscall ofstream::`vbase destructor'(void)
 @ stub -arch=win64 ??_Dofstream@@QEAAXXZ
 @ thiscall -arch=win32 ??_Dostream@@QAEXXZ(ptr) ostream_vbase_dtor
@@ -369,7 +369,7 @@
 @ thiscall -arch=win32 ??_Eiostream@@UAEPAXI at Z(ptr long) iostream_vector_dtor
 @ thiscall -arch=win32 ??_Eistream@@UAEPAXI at Z(ptr long) istream_vector_dtor
 @ thiscall -arch=win32 ??_Eistream_withassign@@UAEPAXI at Z(ptr long) istream_vector_dtor
-@ stub -arch=win32 ??_Eistrstream@@UAEPAXI at Z  # virtual void * __thiscall istrstream::`vector deleting destructor'(unsigned int)
+@ thiscall -arch=win32 ??_Eistrstream@@UAEPAXI at Z(ptr long) istream_vector_dtor
 @ thiscall -arch=win32 ??_Elogic_error@@UAEPAXI at Z(ptr long) MSVCP_logic_error_vector_dtor
 @ stub -arch=win32 ??_Eofstream@@UAEPAXI at Z  # virtual void * __thiscall ofstream::`vector deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Eostream@@UAEPAXI at Z(ptr long) ostream_vector_dtor
@@ -388,7 +388,7 @@
 @ thiscall -arch=win32 ??_Giostream@@UAEPAXI at Z(ptr long) iostream_scalar_dtor
 @ thiscall -arch=win32 ??_Gistream@@UAEPAXI at Z(ptr long) istream_scalar_dtor
 @ thiscall -arch=win32 ??_Gistream_withassign@@UAEPAXI at Z(ptr long) istream_scalar_dtor
-@ stub -arch=win32 ??_Gistrstream@@UAEPAXI at Z  # virtual void * __thiscall istrstream::`scalar deleting destructor'(unsigned int)
+@ thiscall -arch=win32 ??_Gistrstream@@UAEPAXI at Z(ptr long) istream_scalar_dtor
 @ thiscall -arch=win32 ??_Glogic_error@@UAEPAXI at Z(ptr long) MSVCP_logic_error_scalar_dtor
 @ stub -arch=win32 ??_Gofstream@@UAEPAXI at Z  # virtual void * __thiscall ofstream::`scalar deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Gostream@@UAEPAXI at Z(ptr long) ostream_scalar_dtor
@@ -619,8 +619,8 @@
 @ stub -arch=win64 ?rdbuf at ifstream@@QEBAPEAVfilebuf@@XZ
 @ thiscall -arch=win32 ?rdbuf at ios@@QBEPAVstreambuf@@XZ(ptr) ios_rdbuf
 @ cdecl -arch=win64 ?rdbuf at ios@@QEBAPEAVstreambuf@@XZ(ptr) ios_rdbuf
-@ stub -arch=win32 ?rdbuf at istrstream@@QBEPAVstrstreambuf@@XZ  # class strstreambuf * __thiscall istrstream::rdbuf(void)const 
-@ stub -arch=win64 ?rdbuf at istrstream@@QEBAPEAVstrstreambuf@@XZ
+@ thiscall -arch=win32 ?rdbuf at istrstream@@QBEPAVstrstreambuf@@XZ(ptr) istrstream_rdbuf
+@ cdecl -arch=win64 ?rdbuf at istrstream@@QEBAPEAVstrstreambuf@@XZ(ptr) istrstream_rdbuf
 @ stub -arch=win32 ?rdbuf at ofstream@@QBEPAVfilebuf@@XZ  # class filebuf * __thiscall ofstream::rdbuf(void)const 
 @ stub -arch=win64 ?rdbuf at ofstream@@QEBAPEAVfilebuf@@XZ
 @ thiscall -arch=win32 ?rdbuf at ostrstream@@QBEPAVstrstreambuf@@XZ(ptr) ostrstream_rdbuf
@@ -712,8 +712,8 @@
 @ cdecl -arch=win64 ?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ(ptr) stdiobuf_stdiofile
 @ thiscall -arch=win32 ?stossc at streambuf@@QAEXXZ(ptr) streambuf_stossc
 @ cdecl -arch=win64 ?stossc at streambuf@@QEAAXXZ(ptr) streambuf_stossc
-@ stub -arch=win32 ?str at istrstream@@QAEPADXZ  # char * __thiscall istrstream::str(void)
-@ stub -arch=win64 ?str at istrstream@@QEAAPEADXZ
+@ thiscall -arch=win32 ?str at istrstream@@QAEPADXZ(ptr) istrstream_str
+@ 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)
diff --git a/dlls/msvcrt20/msvcrt20.spec b/dlls/msvcrt20/msvcrt20.spec
index 237c106..584a85e 100644
--- a/dlls/msvcrt20/msvcrt20.spec
+++ b/dlls/msvcrt20/msvcrt20.spec
@@ -54,12 +54,12 @@
 @ cdecl -arch=win64 ??0istream_withassign@@QEAA at PEAVstreambuf@@@Z(ptr ptr long) msvcirt.??0istream_withassign@@QEAA at PEAVstreambuf@@@Z
 @ thiscall -arch=win32 ??0istream_withassign@@QAE at XZ(ptr long) msvcirt.??0istream_withassign@@QAE at XZ
 @ cdecl -arch=win64 ??0istream_withassign@@QEAA at XZ(ptr long) msvcirt.??0istream_withassign@@QEAA at XZ
-@ stub -arch=win32 ??0istrstream@@QAE at ABV0@@Z
-@ stub -arch=win64 ??0istrstream@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0istrstream@@QAE at PAD@Z
-@ stub -arch=win64 ??0istrstream@@QEAA at PEAD@Z
-@ stub -arch=win32 ??0istrstream@@QAE at PADH@Z
-@ stub -arch=win64 ??0istrstream@@QEAA at PEADH@Z
+@ thiscall -arch=win32 ??0istrstream@@QAE at ABV0@@Z(ptr ptr long) msvcirt.??0istrstream@@QAE at ABV0@@Z
+@ cdecl -arch=win64 ??0istrstream@@QEAA at AEBV0@@Z(ptr ptr long) msvcirt.??0istrstream@@QEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0istrstream@@QAE at PAD@Z(ptr ptr long) msvcirt.??0istrstream@@QAE at PAD@Z
+@ cdecl -arch=win64 ??0istrstream@@QEAA at PEAD@Z(ptr ptr long) msvcirt.??0istrstream@@QEAA at PEAD@Z
+@ thiscall -arch=win32 ??0istrstream@@QAE at PADH@Z(ptr ptr long long) msvcirt.??0istrstream@@QAE at PADH@Z
+@ cdecl -arch=win64 ??0istrstream@@QEAA at PEADH@Z(ptr ptr long long) msvcirt.??0istrstream@@QEAA at PEADH@Z
 @ stub -arch=win32 ??0ofstream@@QAE at ABV0@@Z
 @ stub -arch=win64 ??0ofstream@@QEAA at AEBV0@@Z
 @ stub -arch=win32 ??0ofstream@@QAE at H@Z
@@ -134,8 +134,8 @@
 @ cdecl -arch=win64 ??1istream@@UEAA at XZ(ptr) msvcirt.??1istream@@UEAA at XZ
 @ thiscall -arch=win32 ??1istream_withassign@@UAE at XZ(ptr) msvcirt.??1istream_withassign@@UAE at XZ
 @ cdecl -arch=win64 ??1istream_withassign@@UEAA at XZ(ptr) msvcirt.??1istream_withassign@@UEAA at XZ
-@ stub -arch=win32 ??1istrstream@@UAE at XZ
-@ stub -arch=win64 ??1istrstream@@UEAA at XZ
+@ thiscall -arch=win32 ??1istrstream@@UAE at XZ(ptr) msvcirt.??1istrstream@@UAE at XZ
+@ cdecl -arch=win64 ??1istrstream@@UEAA at XZ(ptr) msvcirt.??1istrstream@@UEAA at XZ
 @ stub -arch=win32 ??1ofstream@@UAE at XZ
 @ stub -arch=win64 ??1ofstream@@UEAA at XZ
 @ thiscall -arch=win32 ??1ostream@@UAE at XZ(ptr) msvcirt.??1ostream@@UAE at XZ
@@ -182,8 +182,8 @@
 @ cdecl -arch=win64 ??4istream_withassign@@QEAAAEAVistream@@AEBV1@@Z(ptr ptr) msvcirt.??4istream_withassign@@QEAAAEAVistream@@AEBV1@@Z
 @ thiscall -arch=win32 ??4istream_withassign@@QAEAAVistream@@PAVstreambuf@@@Z(ptr ptr) msvcirt.??4istream_withassign@@QAEAAVistream@@PAVstreambuf@@@Z
 @ cdecl -arch=win64 ??4istream_withassign@@QEAAAEAVistream@@PEAVstreambuf@@@Z(ptr ptr) msvcirt.??4istream_withassign@@QEAAAEAVistream@@PEAVstreambuf@@@Z
-@ stub -arch=win32 ??4istrstream@@QAEAAV0 at ABV0@@Z
-@ stub -arch=win64 ??4istrstream@@QEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4istrstream@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4istrstream@@QAEAAV0 at ABV0@@Z
+@ cdecl -arch=win64 ??4istrstream@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4istrstream@@QEAAAEAV0 at AEBV0@@Z
 @ stub -arch=win32 ??4ofstream@@QAEAAV0 at ABV0@@Z
 @ stub -arch=win64 ??4ofstream@@QEAAAEAV0 at AEBV0@@Z
 @ thiscall -arch=win32 ??4ostream@@IAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4ostream@@IAEAAV0 at ABV0@@Z
@@ -293,7 +293,7 @@
 @ extern ??_7iostream@@6B@ msvcirt.??_7iostream@@6B@
 @ extern ??_7istream@@6B@ msvcirt.??_7istream@@6B@
 @ extern ??_7istream_withassign@@6B@ msvcirt.??_7istream_withassign@@6B@
-# @ extern ??_7istrstream@@6B@
+@ extern ??_7istrstream@@6B@ msvcirt.??_7istrstream@@6B@
 # @ extern ??_7ofstream@@6B@
 @ extern ??_7ostream@@6B@ msvcirt.??_7ostream@@6B@
 @ extern ??_7ostream_withassign@@6B@ msvcirt.??_7ostream_withassign@@6B@
@@ -310,7 +310,7 @@
 @ extern ??_8iostream@@7Bostream@@@ msvcirt.??_8iostream@@7Bostream@@@
 @ extern ??_8istream@@7B@ msvcirt.??_8istream@@7B@
 @ extern ??_8istream_withassign@@7B@ msvcirt.??_8istream_withassign@@7B@
-# @ extern ??_8istrstream@@7B@
+@ extern ??_8istrstream@@7B@ msvcirt.??_8istrstream@@7B@
 # @ extern ??_8ofstream@@7B@
 @ extern ??_8ostream@@7B@ msvcirt.??_8ostream@@7B@
 @ extern ??_8ostream_withassign@@7B@ msvcirt.??_8ostream_withassign@@7B@
@@ -329,8 +329,8 @@
 @ cdecl -arch=win64 ??_Distream@@QEAAXXZ(ptr) msvcirt.??_Distream@@QEAAXXZ
 @ thiscall -arch=win32 ??_Distream_withassign@@QAEXXZ(ptr) msvcirt.??_Distream_withassign@@QAEXXZ
 @ cdecl -arch=win64 ??_Distream_withassign@@QEAAXXZ(ptr) msvcirt.??_Distream_withassign@@QEAAXXZ
-@ stub -arch=win32 ??_Distrstream@@QAEXXZ
-@ stub -arch=win64 ??_Distrstream@@QEAAXXZ
+@ thiscall -arch=win32 ??_Distrstream@@QAEXXZ(ptr) msvcirt.??_Distrstream@@QAEXXZ
+@ cdecl -arch=win64 ??_Distrstream@@QEAAXXZ(ptr) msvcirt.??_Distrstream@@QEAAXXZ
 @ stub -arch=win32 ??_Dofstream@@QAEXXZ
 @ stub -arch=win64 ??_Dofstream@@QEAAXXZ
 @ thiscall -arch=win32 ??_Dostream@@QAEXXZ(ptr) msvcirt.??_Dostream@@QAEXXZ
@@ -351,7 +351,7 @@
 @ thiscall -arch=win32 ??_Eiostream@@UAEPAXI at Z(ptr long) msvcirt.??_Eiostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eistream@@UAEPAXI at Z(ptr long) msvcirt.??_Eistream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eistream_withassign@@UAEPAXI at Z(ptr long) msvcirt.??_Eistream_withassign@@UAEPAXI at Z
-@ stub -arch=win32 ??_Eistrstream@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Eistrstream@@UAEPAXI at Z(ptr long) msvcirt.??_Eistrstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eofstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eostream@@UAEPAXI at Z(ptr long) msvcirt.??_Eostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eostream_withassign@@UAEPAXI at Z(ptr long) msvcirt.??_Eostream_withassign@@UAEPAXI at Z
@@ -369,7 +369,7 @@
 @ thiscall -arch=win32 ??_Giostream@@UAEPAXI at Z(ptr long) msvcirt.??_Giostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gistream@@UAEPAXI at Z(ptr long) msvcirt.??_Gistream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gistream_withassign@@UAEPAXI at Z(ptr long) msvcirt.??_Gistream_withassign@@UAEPAXI at Z
-@ stub -arch=win32 ??_Gistrstream@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Gistrstream@@UAEPAXI at Z(ptr long) msvcirt.??_Gistrstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gofstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gostream@@UAEPAXI at Z(ptr long) msvcirt.??_Gostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gostream_withassign@@UAEPAXI at Z(ptr long) msvcirt.??_Gostream_withassign@@UAEPAXI at Z
@@ -605,8 +605,8 @@
 @ stub -arch=win64 ?rdbuf at ifstream@@QEBAPEAVfilebuf@@XZ
 @ thiscall -arch=win32 ?rdbuf at ios@@QBEPAVstreambuf@@XZ(ptr) msvcirt.?rdbuf at ios@@QBEPAVstreambuf@@XZ
 @ cdecl -arch=win64 ?rdbuf at ios@@QEBAPEAVstreambuf@@XZ(ptr) msvcirt.?rdbuf at ios@@QEBAPEAVstreambuf@@XZ
-@ stub -arch=win32 ?rdbuf at istrstream@@QBEPAVstrstreambuf@@XZ
-@ stub -arch=win64 ?rdbuf at istrstream@@QEBAPEAVstrstreambuf@@XZ
+@ thiscall -arch=win32 ?rdbuf at istrstream@@QBEPAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf at istrstream@@QBEPAVstrstreambuf@@XZ
+@ cdecl -arch=win64 ?rdbuf at istrstream@@QEBAPEAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf at istrstream@@QEBAPEAVstrstreambuf@@XZ
 @ stub -arch=win32 ?rdbuf at ofstream@@QBEPAVfilebuf@@XZ
 @ stub -arch=win64 ?rdbuf at ofstream@@QEBAPEAVfilebuf@@XZ
 @ thiscall -arch=win32 ?rdbuf at ostrstream@@QBEPAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf at ostrstream@@QBEPAVstrstreambuf@@XZ
@@ -700,8 +700,8 @@
 @ cdecl -arch=win64 ?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ(ptr) msvcirt.?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ
 @ thiscall -arch=win32 ?stossc at streambuf@@QAEXXZ(ptr) msvcirt.?stossc at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?stossc at streambuf@@QEAAXXZ(ptr) msvcirt.?stossc at streambuf@@QEAAXXZ
-@ stub -arch=win32 ?str at istrstream@@QAEPADXZ
-@ stub -arch=win64 ?str at istrstream@@QEAAPEADXZ
+@ thiscall -arch=win32 ?str at istrstream@@QAEPADXZ(ptr) msvcirt.?str at istrstream@@QAEPADXZ
+@ 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
diff --git a/dlls/msvcrt40/msvcrt40.spec b/dlls/msvcrt40/msvcrt40.spec
index 94293be..7c83691 100644
--- a/dlls/msvcrt40/msvcrt40.spec
+++ b/dlls/msvcrt40/msvcrt40.spec
@@ -72,12 +72,12 @@
 @ cdecl -arch=win64 ??0istream_withassign@@QEAA at PEAVstreambuf@@@Z(ptr ptr long) msvcirt.??0istream_withassign@@QEAA at PEAVstreambuf@@@Z
 @ thiscall -arch=win32 ??0istream_withassign@@QAE at XZ(ptr long) msvcirt.??0istream_withassign@@QAE at XZ
 @ cdecl -arch=win64 ??0istream_withassign@@QEAA at XZ(ptr long) msvcirt.??0istream_withassign@@QEAA at XZ
-@ stub -arch=win32 ??0istrstream@@QAE at ABV0@@Z
-@ stub -arch=win64 ??0istrstream@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0istrstream@@QAE at PAD@Z
-@ stub -arch=win64 ??0istrstream@@QEAA at PEAD@Z
-@ stub -arch=win32 ??0istrstream@@QAE at PADH@Z
-@ stub -arch=win64 ??0istrstream@@QEAA at PEADH@Z
+@ thiscall -arch=win32 ??0istrstream@@QAE at ABV0@@Z(ptr ptr long) msvcirt.??0istrstream@@QAE at ABV0@@Z
+@ cdecl -arch=win64 ??0istrstream@@QEAA at AEBV0@@Z(ptr ptr long) msvcirt.??0istrstream@@QEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0istrstream@@QAE at PAD@Z(ptr ptr long) msvcirt.??0istrstream@@QAE at PAD@Z
+@ cdecl -arch=win64 ??0istrstream@@QEAA at PEAD@Z(ptr ptr long) msvcirt.??0istrstream@@QEAA at PEAD@Z
+@ thiscall -arch=win32 ??0istrstream@@QAE at PADH@Z(ptr ptr long long) msvcirt.??0istrstream@@QAE at PADH@Z
+@ cdecl -arch=win64 ??0istrstream@@QEAA at PEADH@Z(ptr ptr long long) msvcirt.??0istrstream@@QEAA at PEADH@Z
 @ thiscall -arch=win32 ??0logic_error@@QAE at ABQBD@Z(ptr ptr) msvcirt.??0logic_error@@QAE at ABQBD@Z
 @ cdecl -arch=win64 ??0logic_error@@QEAA at AEBQEBD@Z(ptr ptr) msvcirt.??0logic_error@@QEAA at AEBQEBD@Z
 @ thiscall -arch=win32 ??0logic_error@@QAE at ABV0@@Z(ptr ptr) msvcirt.??0logic_error@@QAE at ABV0@@Z
@@ -164,8 +164,8 @@
 @ cdecl -arch=win64 ??1istream@@UEAA at XZ(ptr) msvcirt.??1istream@@UEAA at XZ
 @ thiscall -arch=win32 ??1istream_withassign@@UAE at XZ(ptr) msvcirt.??1istream_withassign@@UAE at XZ
 @ cdecl -arch=win64 ??1istream_withassign@@UEAA at XZ(ptr) msvcirt.??1istream_withassign@@UEAA at XZ
-@ stub -arch=win32 ??1istrstream@@UAE at XZ
-@ stub -arch=win64 ??1istrstream@@UEAA at XZ
+@ thiscall -arch=win32 ??1istrstream@@UAE at XZ(ptr) msvcirt.??1istrstream@@UAE at XZ
+@ cdecl -arch=win64 ??1istrstream@@UEAA at XZ(ptr) msvcirt.??1istrstream@@UEAA at XZ
 @ thiscall -arch=win32 ??1logic_error@@UAE at XZ(ptr) msvcirt.??1logic_error@@UAE at XZ
 @ cdecl -arch=win64 ??1logic_error@@UEAA at XZ(ptr) msvcirt.??1logic_error@@UEAA at XZ
 @ stub -arch=win32 ??1ofstream@@UAE at XZ
@@ -224,8 +224,8 @@
 @ cdecl -arch=win64 ??4istream_withassign@@QEAAAEAVistream@@AEBV1@@Z(ptr ptr) msvcirt.??4istream_withassign@@QEAAAEAVistream@@AEBV1@@Z
 @ thiscall -arch=win32 ??4istream_withassign@@QAEAAVistream@@PAVstreambuf@@@Z(ptr ptr) msvcirt.??4istream_withassign@@QAEAAVistream@@PAVstreambuf@@@Z
 @ cdecl -arch=win64 ??4istream_withassign@@QEAAAEAVistream@@PEAVstreambuf@@@Z(ptr ptr) msvcirt.??4istream_withassign@@QEAAAEAVistream@@PEAVstreambuf@@@Z
-@ stub -arch=win32 ??4istrstream@@QAEAAV0 at ABV0@@Z
-@ stub -arch=win64 ??4istrstream@@QEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4istrstream@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4istrstream@@QAEAAV0 at ABV0@@Z
+@ cdecl -arch=win64 ??4istrstream@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4istrstream@@QEAAAEAV0 at AEBV0@@Z
 @ thiscall -arch=win32 ??4logic_error@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4logic_error@@QAEAAV0 at ABV0@@Z
 @ cdecl -arch=win64 ??4logic_error@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4logic_error@@QEAAAEAV0 at AEBV0@@Z
 @ stub -arch=win32 ??4ofstream@@QAEAAV0 at ABV0@@Z
@@ -345,7 +345,7 @@
 @ extern ??_7iostream@@6B@ msvcirt.??_7iostream@@6B@
 @ extern ??_7istream@@6B@ msvcirt.??_7istream@@6B@
 @ extern ??_7istream_withassign@@6B@ msvcirt.??_7istream_withassign@@6B@
-# @ extern ??_7istrstream@@6B@
+@ extern ??_7istrstream@@6B@ msvcirt.??_7istrstream@@6B@
 @ extern ??_7logic_error@@6B@ msvcirt.??_7logic_error@@6B@
 # @ extern ??_7ofstream@@6B@
 @ extern ??_7ostream@@6B@ msvcirt.??_7ostream@@6B@
@@ -363,7 +363,7 @@
 @ extern ??_8iostream@@7Bostream@@@ msvcirt.??_8iostream@@7Bostream@@@
 @ extern ??_8istream@@7B@ msvcirt.??_8istream@@7B@
 @ extern ??_8istream_withassign@@7B@ msvcirt.??_8istream_withassign@@7B@
-# @ extern ??_8istrstream@@7B@
+@ extern ??_8istrstream@@7B@ msvcirt.??_8istrstream@@7B@
 # @ extern ??_8ofstream@@7B@
 @ extern ??_8ostream@@7B@ msvcirt.??_8ostream@@7B@
 @ extern ??_8ostream_withassign@@7B@ msvcirt.??_8ostream_withassign@@7B@
@@ -382,8 +382,8 @@
 @ cdecl -arch=win64 ??_Distream@@QEAAXXZ(ptr) msvcirt.??_Distream@@QEAAXXZ
 @ thiscall -arch=win32 ??_Distream_withassign@@QAEXXZ(ptr) msvcirt.??_Distream_withassign@@QAEXXZ
 @ cdecl -arch=win64 ??_Distream_withassign@@QEAAXXZ(ptr) msvcirt.??_Distream_withassign@@QEAAXXZ
-@ stub -arch=win32 ??_Distrstream@@QAEXXZ
-@ stub -arch=win64 ??_Distrstream@@QEAAXXZ
+@ thiscall -arch=win32 ??_Distrstream@@QAEXXZ(ptr) msvcirt.??_Distrstream@@QAEXXZ
+@ cdecl -arch=win64 ??_Distrstream@@QEAAXXZ(ptr) msvcirt.??_Distrstream@@QEAAXXZ
 @ stub -arch=win32 ??_Dofstream@@QAEXXZ
 @ stub -arch=win64 ??_Dofstream@@QEAAXXZ
 @ thiscall -arch=win32 ??_Dostream@@QAEXXZ(ptr) msvcirt.??_Dostream@@QAEXXZ
@@ -408,7 +408,7 @@
 @ thiscall -arch=win32 ??_Eiostream@@UAEPAXI at Z(ptr long) msvcirt.??_Eiostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eistream@@UAEPAXI at Z(ptr long) msvcirt.??_Eistream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eistream_withassign@@UAEPAXI at Z(ptr long) msvcirt.??_Eistream_withassign@@UAEPAXI at Z
-@ stub -arch=win32 ??_Eistrstream@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Eistrstream@@UAEPAXI at Z(ptr long) msvcirt.??_Eistrstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Elogic_error@@UAEPAXI at Z(ptr long) msvcirt.??_Elogic_error@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eofstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eostream@@UAEPAXI at Z(ptr long) msvcirt.??_Eostream@@UAEPAXI at Z
@@ -431,7 +431,7 @@
 @ thiscall -arch=win32 ??_Giostream@@UAEPAXI at Z(ptr long) msvcirt.??_Giostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gistream@@UAEPAXI at Z(ptr long) msvcirt.??_Gistream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gistream_withassign@@UAEPAXI at Z(ptr long) msvcirt.??_Gistream_withassign@@UAEPAXI at Z
-@ stub -arch=win32 ??_Gistrstream@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Gistrstream@@UAEPAXI at Z(ptr long) msvcirt.??_Gistrstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Glogic_error@@UAEPAXI at Z(ptr long) msvcirt.??_Glogic_error@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gofstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gostream@@UAEPAXI at Z(ptr long) msvcirt.??_Gostream@@UAEPAXI at Z
@@ -676,8 +676,8 @@
 @ stub -arch=win64 ?rdbuf at ifstream@@QEBAPEAVfilebuf@@XZ
 @ thiscall -arch=win32 ?rdbuf at ios@@QBEPAVstreambuf@@XZ(ptr) msvcirt.?rdbuf at ios@@QBEPAVstreambuf@@XZ
 @ cdecl -arch=win64 ?rdbuf at ios@@QEBAPEAVstreambuf@@XZ(ptr) msvcirt.?rdbuf at ios@@QEBAPEAVstreambuf@@XZ
-@ stub -arch=win32 ?rdbuf at istrstream@@QBEPAVstrstreambuf@@XZ
-@ stub -arch=win64 ?rdbuf at istrstream@@QEBAPEAVstrstreambuf@@XZ
+@ thiscall -arch=win32 ?rdbuf at istrstream@@QBEPAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf at istrstream@@QBEPAVstrstreambuf@@XZ
+@ cdecl -arch=win64 ?rdbuf at istrstream@@QEBAPEAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf at istrstream@@QEBAPEAVstrstreambuf@@XZ
 @ stub -arch=win32 ?rdbuf at ofstream@@QBEPAVfilebuf@@XZ
 @ stub -arch=win64 ?rdbuf at ofstream@@QEBAPEAVfilebuf@@XZ
 @ thiscall -arch=win32 ?rdbuf at ostrstream@@QBEPAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf at ostrstream@@QBEPAVstrstreambuf@@XZ
@@ -772,8 +772,8 @@
 @ cdecl -arch=win64 ?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ(ptr) msvcirt.?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ
 @ thiscall -arch=win32 ?stossc at streambuf@@QAEXXZ(ptr) msvcirt.?stossc at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?stossc at streambuf@@QEAAXXZ(ptr) msvcirt.?stossc at streambuf@@QEAAXXZ
-@ stub -arch=win32 ?str at istrstream@@QAEPADXZ
-@ stub -arch=win64 ?str at istrstream@@QEAAPEADXZ
+@ thiscall -arch=win32 ?str at istrstream@@QAEPADXZ(ptr) msvcirt.?str at istrstream@@QAEPADXZ
+@ 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
-- 
2.7.4




More information about the wine-patches mailing list