[1/2] msvcirt: Add initial implementation of streambuf
Iván Matellanes
matellanesivan at gmail.com
Tue Jun 2 07:52:14 CDT 2015
I hope it's not too long. It implements constructors, destructors and assignments.
---
dlls/msvcirt/msvcirt.c | 189 ++++++++++++++++++++++++++++++++++++++++++++
dlls/msvcirt/msvcirt.spec | 42 +++++-----
dlls/msvcrt20/msvcrt20.spec | 42 +++++-----
dlls/msvcrt40/msvcrt40.spec | 42 +++++-----
4 files changed, 252 insertions(+), 63 deletions(-)
diff --git a/dlls/msvcirt/msvcirt.c b/dlls/msvcirt/msvcirt.c
index e73f93e..295a8d8 100644
--- a/dlls/msvcirt/msvcirt.c
+++ b/dlls/msvcirt/msvcirt.c
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2007 Alexandre Julliard
+ * Copyright (C) 2015 Iván Matellanes
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -27,6 +28,29 @@
WINE_DEFAULT_DEBUG_CHANNEL(msvcirt);
+/* class streambuf */
+typedef struct {
+ const vtable_ptr *vtable;
+ int allocated;
+ int unbuffered;
+ int unknown;
+ char *base;
+ char *ebuf;
+ char *pbase;
+ char *pptr;
+ char *epptr;
+ char *eback;
+ char *gptr;
+ char *egptr;
+ int unknown2;
+ CRITICAL_SECTION lock;
+} streambuf;
+
+void __thiscall streambuf_setb(streambuf*, char*, char*, int);
+streambuf* __thiscall streambuf_setbuf(streambuf*, char*, int);
+void __thiscall streambuf_setg(streambuf*, char*, char*, char*);
+void __thiscall streambuf_setp(streambuf*, char*, char*);
+
typedef struct {
LPVOID VTable;
} class_ios;
@@ -39,6 +63,171 @@ typedef struct {
LPVOID VTable;
} class_strstreambuf;
+/* ??_7streambuf@@6B@ */
+extern const vtable_ptr MSVCP_streambuf_vtable;
+
+#ifndef __GNUC__
+void __asm_dummy_vtables(void) {
+#endif
+ __ASM_VTABLE(streambuf,
+ VTABLE_ADD_FUNC(streambuf_vector_dtor));
+#ifndef __GNUC__
+}
+#endif
+
+DEFINE_RTTI_DATA0(streambuf, 0, ".?AVstreambuf@@")
+
+/* ??0streambuf@@IAE at PADH@Z */
+/* ??0streambuf@@IEAA at PEADH@Z */
+DEFINE_THISCALL_WRAPPER(streambuf_reserve_ctor, 12)
+streambuf* __thiscall streambuf_reserve_ctor(streambuf *this, char *buffer, int length)
+{
+ TRACE("(%p %p %d)\n", this, buffer, length);
+ this->vtable = &MSVCP_streambuf_vtable;
+ this->allocated = 0;
+ this->unknown = -1;
+ this->unknown2 = -1;
+ this->base = NULL;
+ streambuf_setbuf(this, buffer, length);
+ streambuf_setg(this, NULL, NULL, NULL);
+ streambuf_setp(this, NULL, NULL);
+ InitializeCriticalSection(&this->lock);
+ return this;
+}
+
+/* ??0streambuf@@IAE at XZ */
+/* ??0streambuf@@IEAA at XZ */
+DEFINE_THISCALL_WRAPPER(streambuf_ctor, 4)
+streambuf* __thiscall streambuf_ctor(streambuf *this)
+{
+ TRACE("(%p)\n", this);
+ this->vtable = &MSVCP_streambuf_vtable;
+ this->allocated = 0;
+ this->unbuffered = 0;
+ this->unknown = -1;
+ this->unknown2 = -1;
+ streambuf_setb(this, NULL, NULL, 0);
+ streambuf_setg(this, NULL, NULL, NULL);
+ streambuf_setp(this, NULL, NULL);
+ InitializeCriticalSection(&this->lock);
+ return this;
+}
+
+/* ??0streambuf@@QAE at ABV0@@Z */
+/* ??0streambuf@@QEAA at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(streambuf_copy_ctor, 8)
+streambuf* __thiscall streambuf_copy_ctor(streambuf *this, const streambuf *copy)
+{
+ TRACE("(%p %p)\n", this, copy);
+ *this = *copy;
+ this->vtable = &MSVCP_streambuf_vtable;
+ return this;
+}
+
+/* ??1streambuf@@UAE at XZ */
+/* ??1streambuf@@UEAA at XZ */
+DEFINE_THISCALL_WRAPPER(streambuf_dtor, 4)
+void __thiscall streambuf_dtor(streambuf *this)
+{
+ TRACE("(%p)\n", this);
+ if (this->allocated)
+ MSVCRT_operator_delete(this->base);
+ DeleteCriticalSection(&this->lock);
+}
+
+/* ??4streambuf@@QAEAAV0 at ABV0@@Z */
+/* ??4streambuf@@QEAAAEAV0 at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(streambuf_assign, 8)
+streambuf* __thiscall streambuf_assign(streambuf *this, const streambuf *rhs)
+{
+ streambuf_dtor(this);
+ return streambuf_copy_ctor(this, rhs);
+}
+
+/* ??_Estreambuf@@UAEPAXI at Z */
+DEFINE_THISCALL_WRAPPER(streambuf_vector_dtor, 8)
+streambuf* __thiscall streambuf_vector_dtor(streambuf *this, unsigned int flags)
+{
+ TRACE("(%p %x)\n", this, flags);
+ if (flags & 2) {
+ /* we have an array, with the number of elements stored before the first object */
+ INT_PTR i, *ptr = (INT_PTR *)this-1;
+
+ for (i = *ptr-1; i >= 0; i--)
+ streambuf_dtor(this+i);
+ MSVCRT_operator_delete(ptr);
+ } else {
+ streambuf_dtor(this);
+ if (flags & 1)
+ MSVCRT_operator_delete(this);
+ }
+ return this;
+}
+
+/* ??_Gstreambuf@@UAEPAXI at Z */
+DEFINE_THISCALL_WRAPPER(streambuf_scalar_dtor, 8)
+streambuf* __thiscall streambuf_scalar_dtor(streambuf *this, unsigned int flags)
+{
+ TRACE("(%p %x)\n", this, flags);
+ streambuf_dtor(this);
+ if (flags & 1) MSVCRT_operator_delete(this);
+ return this;
+}
+
+/* ?setb at streambuf@@IAEXPAD0H at Z */
+/* ?setb at streambuf@@IEAAXPEAD0H at Z */
+DEFINE_THISCALL_WRAPPER(streambuf_setb, 16)
+void __thiscall streambuf_setb(streambuf *this, char *ba, char *eb, int delete)
+{
+ TRACE("(%p %p %p %d)\n", this, ba, eb, delete);
+ if (this->allocated)
+ MSVCRT_operator_delete(this->base);
+ this->allocated = delete;
+ this->base = ba;
+ this->ebuf = eb;
+}
+
+/* ?setbuf at streambuf@@UAEPAV1 at PADH@Z */
+/* ?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z */
+DEFINE_THISCALL_WRAPPER(streambuf_setbuf, 12)
+streambuf* __thiscall streambuf_setbuf(streambuf *this, char *buffer, int length)
+{
+ TRACE("(%p %p %d)\n", this, buffer, length);
+ if (this->base != NULL)
+ return NULL;
+
+ if (buffer == NULL || !length) {
+ this->unbuffered = 1;
+ this->base = this->ebuf = NULL;
+ } else {
+ this->unbuffered = 0;
+ this->base = buffer;
+ this->ebuf = buffer + length;
+ }
+ return this;
+}
+
+/* ?setg at streambuf@@IAEXPAD00 at Z */
+/* ?setg at streambuf@@IEAAXPEAD00 at Z */
+DEFINE_THISCALL_WRAPPER(streambuf_setg, 16)
+void __thiscall streambuf_setg(streambuf *this, char *ek, char *gp, char *eg)
+{
+ TRACE("(%p %p %p %p)\n", this, ek, gp, eg);
+ this->eback = ek;
+ this->gptr = gp;
+ this->egptr = eg;
+}
+
+/* ?setp at streambuf@@IAEXPAD0 at Z */
+/* ?setp at streambuf@@IEAAXPEAD0 at Z */
+DEFINE_THISCALL_WRAPPER(streambuf_setp, 12)
+void __thiscall streambuf_setp(streambuf *this, char *pb, char *ep)
+{
+ TRACE("(%p %p %p)\n", this, pb, ep);
+ this->pbase = this->pptr = pb;
+ this->epptr = ep;
+}
+
/******************************************************************
* ??1ios@@UAE at XZ (MSVCRTI.@)
* class ios & __thiscall ios::-ios<<(void)
diff --git a/dlls/msvcirt/msvcirt.spec b/dlls/msvcirt/msvcirt.spec
index 3399b5d..61905fe 100644
--- a/dlls/msvcirt/msvcirt.spec
+++ b/dlls/msvcirt/msvcirt.spec
@@ -106,12 +106,12 @@
@ stub -arch=win64 ??0stdiostream@@QEAA at AEBV0@@Z
@ stub -arch=win32 ??0stdiostream@@QAE at PAU_iobuf@@@Z # __thiscall stdiostream::stdiostream(struct _iobuf *)
@ stub -arch=win64 ??0stdiostream@@QEAA at PEAU_iobuf@@@Z
-@ stub -arch=win32 ??0streambuf@@IAE at PADH@Z # __thiscall streambuf::streambuf(char *,int)
-@ stub -arch=win64 ??0streambuf@@IEAA at PEADH@Z
-@ stub -arch=win32 ??0streambuf@@IAE at XZ # __thiscall streambuf::streambuf(void)
-@ stub -arch=win64 ??0streambuf@@IEAA at XZ
-@ stub -arch=win32 ??0streambuf@@QAE at ABV0@@Z # __thiscall streambuf::streambuf(class streambuf const &)
-@ stub -arch=win64 ??0streambuf@@QEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0streambuf@@IAE at PADH@Z(ptr ptr long) streambuf_reserve_ctor
+@ cdecl -arch=win64 ??0streambuf@@IEAA at PEADH@Z(ptr ptr long) streambuf_reserve_ctor
+@ thiscall -arch=win32 ??0streambuf@@IAE at XZ(ptr) streambuf_ctor
+@ 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)
@@ -164,8 +164,8 @@
@ stub -arch=win64 ??1stdiobuf@@UEAA at XZ
@ stub -arch=win32 ??1stdiostream@@UAE at XZ # virtual __thiscall stdiostream::~stdiostream(void)
@ stub -arch=win64 ??1stdiostream@@UEAA at XZ
-@ stub -arch=win32 ??1streambuf@@UAE at XZ # virtual __thiscall streambuf::~streambuf(void)
-@ stub -arch=win64 ??1streambuf@@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
@ stub -arch=win32 ??1strstreambuf@@UAE at XZ # virtual __thiscall strstreambuf::~strstreambuf(void)
@@ -218,8 +218,8 @@
@ stub -arch=win64 ??4stdiobuf@@QEAAAEAV0 at AEBV0@@Z
@ stub -arch=win32 ??4stdiostream@@QAEAAV0 at AAV0@@Z # class stdiostream & __thiscall stdiostream::operator=(class stdiostream &)
@ stub -arch=win64 ??4stdiostream@@QEAAAEAV0 at AEAV0@@Z
-@ stub -arch=win32 ??4streambuf@@QAEAAV0 at ABV0@@Z # class streambuf & __thiscall streambuf::operator=(class streambuf const &)
-@ stub -arch=win64 ??4streambuf@@QEAAAEAV0 at AEBV0@@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
@ stub -arch=win32 ??4strstreambuf@@QAEAAV0 at ABV0@@Z # class strstreambuf & __thiscall strstreambuf::operator=(class strstreambuf const &)
@@ -318,7 +318,7 @@
# @ extern ??_7ostrstream@@6B@ # const ostrstream::`vftable'
# @ extern ??_7stdiobuf@@6B@ # const stdiobuf::`vftable'
# @ extern ??_7stdiostream@@6B@ # const stdiostream::`vftable'
-# @ extern ??_7streambuf@@6B@ # const streambuf::`vftable'
+@ extern ??_7streambuf@@6B@ MSVCP_streambuf_vtable
# @ extern ??_7strstream@@6B@ # const strstream::`vftable'
# @ extern ??_7strstreambuf@@6B@ # const strstreambuf::`vftable'
# @ extern ??_8fstream@@7Bistream@@@ # const fstream::`vbtable'{for `istream'}
@@ -377,7 +377,7 @@
@ stub -arch=win32 ??_Eostrstream@@UAEPAXI at Z # virtual void * __thiscall ostrstream::`vector deleting destructor'(unsigned int)
@ stub -arch=win32 ??_Estdiobuf@@UAEPAXI at Z # virtual void * __thiscall stdiobuf::`vector deleting destructor'(unsigned int)
@ stub -arch=win32 ??_Estdiostream@@UAEPAXI at Z # virtual void * __thiscall stdiostream::`vector deleting destructor'(unsigned int)
-@ stub -arch=win32 ??_Estreambuf@@UAEPAXI at Z # virtual void * __thiscall streambuf::`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)
@ stub -arch=win32 ??_Estrstreambuf@@UAEPAXI at Z # virtual void * __thiscall strstreambuf::`vector deleting destructor'(unsigned int)
@ thiscall -arch=win32 ??_Gexception@@UAEPAXI at Z(ptr long) MSVCP_exception_scalar_dtor
@@ -396,7 +396,7 @@
@ stub -arch=win32 ??_Gostrstream@@UAEPAXI at Z # virtual void * __thiscall ostrstream::`scalar deleting destructor'(unsigned int)
@ stub -arch=win32 ??_Gstdiobuf@@UAEPAXI at Z # virtual void * __thiscall stdiobuf::`scalar deleting destructor'(unsigned int)
@ stub -arch=win32 ??_Gstdiostream@@UAEPAXI at Z # virtual void * __thiscall stdiostream::`scalar deleting destructor'(unsigned int)
-@ stub -arch=win32 ??_Gstreambuf@@UAEPAXI at Z # virtual void * __thiscall streambuf::`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)
@ stub -arch=win32 ??_Gstrstreambuf@@UAEPAXI at Z # virtual void * __thiscall strstreambuf::`scalar deleting destructor'(unsigned int)
# @ extern ?adjustfield at ios@@2JB # static long const ios::adjustfield
@@ -657,8 +657,8 @@
@ stub -arch=win64 ?seekp at ostream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z
@ stub -arch=win32 ?seekpos at streambuf@@UAEJJH at Z # virtual long __thiscall streambuf::seekpos(long,int)
@ stub -arch=win64 ?seekpos at streambuf@@UEAAJJH at Z
-@ stub -arch=win32 ?setb at streambuf@@IAEXPAD0H at Z # void __thiscall streambuf::setb(char *,char *,int)
-@ stub -arch=win64 ?setb at streambuf@@IEAAXPEAD0H at Z
+@ thiscall -arch=win32 ?setb at streambuf@@IAEXPAD0H at Z(ptr ptr ptr long) streambuf_setb
+@ cdecl -arch=win64 ?setb at streambuf@@IEAAXPEAD0H at Z(ptr ptr ptr long) streambuf_setb
@ stub -arch=win32 ?setbuf at filebuf@@UAEPAVstreambuf@@PADH at Z # virtual class streambuf * __thiscall filebuf::setbuf(char *,int)
@ stub -arch=win64 ?setbuf at filebuf@@UEAAPEAVstreambuf@@PEADH at Z
@ stub -arch=win32 ?setbuf at fstream@@QAEPAVstreambuf@@PADH at Z # class streambuf * __thiscall fstream::setbuf(char *,int)
@@ -667,16 +667,16 @@
@ stub -arch=win64 ?setbuf at ifstream@@QEAAPEAVstreambuf@@PEADH at Z
@ stub -arch=win32 ?setbuf at ofstream@@QAEPAVstreambuf@@PADH at Z # class streambuf * __thiscall ofstream::setbuf(char *,int)
@ stub -arch=win64 ?setbuf at ofstream@@QEAAPEAVstreambuf@@PEADH at Z
-@ stub -arch=win32 ?setbuf at streambuf@@UAEPAV1 at PADH@Z # virtual class streambuf * __thiscall streambuf::setbuf(char *,int)
-@ stub -arch=win64 ?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z
+@ thiscall -arch=win32 ?setbuf at streambuf@@UAEPAV1 at PADH@Z(ptr ptr long) streambuf_setbuf
+@ cdecl -arch=win64 ?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z(ptr ptr long) streambuf_setbuf
@ stub -arch=win32 ?setbuf at strstreambuf@@UAEPAVstreambuf@@PADH at Z # virtual class streambuf * __thiscall strstreambuf::setbuf(char *,int)
@ stub -arch=win64 ?setbuf at strstreambuf@@UEAAPEAVstreambuf@@PEADH at Z
@ stub -arch=win32 ?setf at ios@@QAEJJ at Z # long __thiscall ios::setf(long)
@ stub -arch=win64 ?setf at ios@@QEAAJJ at Z
@ stub -arch=win32 ?setf at ios@@QAEJJJ at Z # long __thiscall ios::setf(long,long)
@ stub -arch=win64 ?setf at ios@@QEAAJJJ at Z
-@ stub -arch=win32 ?setg at streambuf@@IAEXPAD00 at Z # void __thiscall streambuf::setg(char *,char *,char *)
-@ stub -arch=win64 ?setg at streambuf@@IEAAXPEAD00 at Z
+@ thiscall -arch=win32 ?setg at streambuf@@IAEXPAD00 at Z(ptr ptr ptr ptr) streambuf_setg
+@ cdecl -arch=win64 ?setg at streambuf@@IEAAXPEAD00 at Z(ptr ptr ptr ptr) streambuf_setg
@ stub -arch=win32 ?setlock at ios@@QAAXXZ # void __cdecl ios::setlock(void)
@ stub -arch=win64 ?setlock at ios@@QEAAXXZ
@ stub -arch=win32 ?setlock at streambuf@@QAEXXZ # void __thiscall streambuf::setlock(void)
@@ -689,8 +689,8 @@
@ stub -arch=win64 ?setmode at ifstream@@QEAAHH at Z
@ stub -arch=win32 ?setmode at ofstream@@QAEHH at Z # int __thiscall ofstream::setmode(int)
@ stub -arch=win64 ?setmode at ofstream@@QEAAHH at Z
-@ stub -arch=win32 ?setp at streambuf@@IAEXPAD0 at Z # void __thiscall streambuf::setp(char *,char *)
-@ stub -arch=win64 ?setp at streambuf@@IEAAXPEAD0 at Z
+@ thiscall -arch=win32 ?setp at streambuf@@IAEXPAD0 at Z(ptr ptr ptr) streambuf_setp
+@ cdecl -arch=win64 ?setp at streambuf@@IEAAXPEAD0 at Z(ptr ptr ptr) streambuf_setp
@ stub -arch=win32 ?setrwbuf at stdiobuf@@QAEHHH at Z # int __thiscall stdiobuf::setrwbuf(int,int)
@ stub -arch=win64 ?setrwbuf at stdiobuf@@QEAAHHH at Z
@ stub -arch=win32 ?sgetc at streambuf@@QAEHXZ # int __thiscall streambuf::sgetc(void)
diff --git a/dlls/msvcrt20/msvcrt20.spec b/dlls/msvcrt20/msvcrt20.spec
index b166ada..a5ca82d 100644
--- a/dlls/msvcrt20/msvcrt20.spec
+++ b/dlls/msvcrt20/msvcrt20.spec
@@ -96,12 +96,12 @@
@ stub -arch=win64 ??0stdiostream@@QEAA at AEBV0@@Z
@ stub -arch=win32 ??0stdiostream@@QAE at PAU_iobuf@@@Z
@ stub -arch=win64 ??0stdiostream@@QEAA at PEAU_iobuf@@@Z
-@ stub -arch=win32 ??0streambuf@@IAE at PADH@Z
-@ stub -arch=win64 ??0streambuf@@IEAA at PEADH@Z
-@ stub -arch=win32 ??0streambuf@@IAE at XZ
-@ stub -arch=win64 ??0streambuf@@IEAA at XZ
-@ stub -arch=win32 ??0streambuf@@QAE at ABV0@@Z
-@ stub -arch=win64 ??0streambuf@@QEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0streambuf@@IAE at PADH@Z(ptr ptr long) msvcirt.??0streambuf@@IAE at PADH@Z
+@ cdecl -arch=win64 ??0streambuf@@IEAA at PEADH@Z(ptr ptr long) msvcirt.??0streambuf@@IEAA at PEADH@Z
+@ thiscall -arch=win32 ??0streambuf@@IAE at XZ(ptr) msvcirt.??0streambuf@@IAE at XZ
+@ 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
@@ -148,8 +148,8 @@
@ stub -arch=win64 ??1stdiobuf@@UEAA at XZ
@ stub -arch=win32 ??1stdiostream@@UAE at XZ
@ stub -arch=win64 ??1stdiostream@@UEAA at XZ
-@ stub -arch=win32 ??1streambuf@@UAE at XZ
-@ stub -arch=win64 ??1streambuf@@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
@ stub -arch=win32 ??1strstreambuf@@UAE at XZ
@@ -202,8 +202,8 @@
@ stub -arch=win64 ??4stdiobuf@@QEAAAEAV0 at AEBV0@@Z
@ stub -arch=win32 ??4stdiostream@@QAEAAV0 at AAV0@@Z
@ stub -arch=win64 ??4stdiostream@@QEAAAEAV0 at AEAV0@@Z
-@ stub -arch=win32 ??4streambuf@@QAEAAV0 at ABV0@@Z
-@ stub -arch=win64 ??4streambuf@@QEAAAEAV0 at AEBV0@@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
@ stub -arch=win32 ??4strstreambuf@@QAEAAV0 at ABV0@@Z
@@ -300,7 +300,7 @@
# @ extern ??_7ostrstream@@6B@
# @ extern ??_7stdiobuf@@6B@
# @ extern ??_7stdiostream@@6B@
-# @ extern ??_7streambuf@@6B@
+@ extern ??_7streambuf@@6B@ msvcirt.??_7streambuf@@6B@
# @ extern ??_7strstream@@6B@
# @ extern ??_7strstreambuf@@6B@
# @ extern ??_8fstream@@7Bistream@@@
@@ -358,7 +358,7 @@
@ stub -arch=win32 ??_Eostrstream@@UAEPAXI at Z
@ stub -arch=win32 ??_Estdiobuf@@UAEPAXI at Z
@ stub -arch=win32 ??_Estdiostream@@UAEPAXI at Z
-@ stub -arch=win32 ??_Estreambuf@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Estreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Estreambuf@@UAEPAXI at Z
@ stub -arch=win32 ??_Estrstream@@UAEPAXI at Z
@ stub -arch=win32 ??_Estrstreambuf@@UAEPAXI at Z
@ stub -arch=win32 ??_GIostream_init@@QAEPAXI at Z
@@ -376,7 +376,7 @@
@ stub -arch=win32 ??_Gostrstream@@UAEPAXI at Z
@ stub -arch=win32 ??_Gstdiobuf@@UAEPAXI at Z
@ stub -arch=win32 ??_Gstdiostream@@UAEPAXI at Z
-@ stub -arch=win32 ??_Gstreambuf@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Gstreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gstreambuf@@UAEPAXI at Z
@ stub -arch=win32 ??_Gstrstream@@UAEPAXI at Z
@ stub -arch=win32 ??_Gstrstreambuf@@UAEPAXI at Z
@ cdecl -arch=win32 ?_query_new_handler@@YAP6AHI at ZXZ() msvcrt.?_query_new_handler@@YAP6AHI at ZXZ
@@ -645,8 +645,8 @@
@ stub -arch=win64 ?seekpos at streambuf@@UEAAJJH at Z
@ cdecl ?set_terminate@@YAP6AXXZP6AXXZ at Z(ptr) msvcrt.?set_terminate@@YAP6AXXZP6AXXZ at Z
@ cdecl ?set_unexpected@@YAP6AXXZP6AXXZ at Z(ptr) msvcrt.?set_unexpected@@YAP6AXXZP6AXXZ at Z
-@ stub -arch=win32 ?setb at streambuf@@IAEXPAD0H at Z
-@ stub -arch=win64 ?setb at streambuf@@IEAAXPEAD0H at Z
+@ thiscall -arch=win32 ?setb at streambuf@@IAEXPAD0H at Z(ptr ptr ptr long) msvcirt.?setb at streambuf@@IAEXPAD0H at Z
+@ cdecl -arch=win64 ?setb at streambuf@@IEAAXPEAD0H at Z(ptr ptr ptr long) msvcirt.?setb at streambuf@@IEAAXPEAD0H at Z
@ stub -arch=win32 ?setbuf at filebuf@@UAEPAVstreambuf@@PADH at Z
@ stub -arch=win64 ?setbuf at filebuf@@UEAAPEAVstreambuf@@PEADH at Z
@ stub -arch=win32 ?setbuf at fstream@@QAEPAVstreambuf@@PADH at Z
@@ -655,16 +655,16 @@
@ stub -arch=win64 ?setbuf at ifstream@@QEAAPEAVstreambuf@@PEADH at Z
@ stub -arch=win32 ?setbuf at ofstream@@QAEPAVstreambuf@@PADH at Z
@ stub -arch=win64 ?setbuf at ofstream@@QEAAPEAVstreambuf@@PEADH at Z
-@ stub -arch=win32 ?setbuf at streambuf@@UAEPAV1 at PADH@Z
-@ stub -arch=win64 ?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z
+@ thiscall -arch=win32 ?setbuf at streambuf@@UAEPAV1 at PADH@Z(ptr ptr long) msvcirt.?setbuf at streambuf@@UAEPAV1 at PADH@Z
+@ cdecl -arch=win64 ?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z(ptr ptr long) msvcirt.?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z
@ stub -arch=win32 ?setbuf at strstreambuf@@UAEPAVstreambuf@@PADH at Z
@ stub -arch=win64 ?setbuf at strstreambuf@@UEAAPEAVstreambuf@@PEADH at Z
@ stub -arch=win32 ?setf at ios@@QAEJJ at Z
@ stub -arch=win64 ?setf at ios@@QEAAJJ at Z
@ stub -arch=win32 ?setf at ios@@QAEJJJ at Z
@ stub -arch=win64 ?setf at ios@@QEAAJJJ at Z
-@ stub -arch=win32 ?setg at streambuf@@IAEXPAD00 at Z
-@ stub -arch=win64 ?setg at streambuf@@IEAAXPEAD00 at Z
+@ thiscall -arch=win32 ?setg at streambuf@@IAEXPAD00 at Z(ptr ptr ptr ptr) msvcirt.?setg at streambuf@@IAEXPAD00 at Z
+@ cdecl -arch=win64 ?setg at streambuf@@IEAAXPEAD00 at Z(ptr ptr ptr ptr) msvcirt.?setg at streambuf@@IEAAXPEAD00 at Z
@ stub -arch=win32 ?setlock at ios@@QAAXXZ
@ stub -arch=win64 ?setlock at ios@@QEAAXXZ
@ stub -arch=win32 ?setlock at streambuf@@QAEXXZ
@@ -677,8 +677,8 @@
@ stub -arch=win64 ?setmode at ifstream@@QEAAHH at Z
@ stub -arch=win32 ?setmode at ofstream@@QAEHH at Z
@ stub -arch=win64 ?setmode at ofstream@@QEAAHH at Z
-@ stub -arch=win32 ?setp at streambuf@@IAEXPAD0 at Z
-@ stub -arch=win64 ?setp at streambuf@@IEAAXPEAD0 at Z
+@ thiscall -arch=win32 ?setp at streambuf@@IAEXPAD0 at Z(ptr ptr ptr) msvcirt.?setp at streambuf@@IAEXPAD0 at Z
+@ cdecl -arch=win64 ?setp at streambuf@@IEAAXPEAD0 at Z(ptr ptr ptr) msvcirt.?setp at streambuf@@IEAAXPEAD0 at Z
@ stub -arch=win32 ?setrwbuf at stdiobuf@@QAEHHH at Z
@ stub -arch=win64 ?setrwbuf at stdiobuf@@QEAAHHH at Z
@ stub -arch=win32 ?sgetc at streambuf@@QAEHXZ
diff --git a/dlls/msvcrt40/msvcrt40.spec b/dlls/msvcrt40/msvcrt40.spec
index 3b6b0d7..1a25597 100644
--- a/dlls/msvcrt40/msvcrt40.spec
+++ b/dlls/msvcrt40/msvcrt40.spec
@@ -118,12 +118,12 @@
@ stub -arch=win64 ??0stdiostream@@QEAA at AEBV0@@Z
@ stub -arch=win32 ??0stdiostream@@QAE at PAU_iobuf@@@Z
@ stub -arch=win64 ??0stdiostream@@QEAA at PEAU_iobuf@@@Z
-@ stub -arch=win32 ??0streambuf@@IAE at PADH@Z
-@ stub -arch=win64 ??0streambuf@@IEAA at PEADH@Z
-@ stub -arch=win32 ??0streambuf@@IAE at XZ
-@ stub -arch=win64 ??0streambuf@@IEAA at XZ
-@ stub -arch=win32 ??0streambuf@@QAE at ABV0@@Z
-@ stub -arch=win64 ??0streambuf@@QEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0streambuf@@IAE at PADH@Z(ptr ptr long) msvcirt.??0streambuf@@IAE at PADH@Z
+@ cdecl -arch=win64 ??0streambuf@@IEAA at PEADH@Z(ptr ptr long) msvcirt.??0streambuf@@IEAA at PEADH@Z
+@ thiscall -arch=win32 ??0streambuf@@IAE at XZ(ptr) msvcirt.??0streambuf@@IAE at XZ
+@ 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
@@ -180,8 +180,8 @@
@ stub -arch=win64 ??1stdiobuf@@UEAA at XZ
@ stub -arch=win32 ??1stdiostream@@UAE at XZ
@ stub -arch=win64 ??1stdiostream@@UEAA at XZ
-@ stub -arch=win32 ??1streambuf@@UAE at XZ
-@ stub -arch=win64 ??1streambuf@@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
@ stub -arch=win32 ??1strstreambuf@@UAE at XZ
@@ -246,8 +246,8 @@
@ stub -arch=win64 ??4stdiobuf@@QEAAAEAV0 at AEBV0@@Z
@ stub -arch=win32 ??4stdiostream@@QAEAAV0 at AAV0@@Z
@ stub -arch=win64 ??4stdiostream@@QEAAAEAV0 at AEAV0@@Z
-@ stub -arch=win32 ??4streambuf@@QAEAAV0 at ABV0@@Z
-@ stub -arch=win64 ??4streambuf@@QEAAAEAV0 at AEBV0@@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
@ stub -arch=win32 ??4strstreambuf@@QAEAAV0 at ABV0@@Z
@@ -353,7 +353,7 @@
# @ extern ??_7ostrstream@@6B@
# @ extern ??_7stdiobuf@@6B@
# @ extern ??_7stdiostream@@6B@
-# @ extern ??_7streambuf@@6B@
+@ extern ??_7streambuf@@6B@ msvcirt.??_7streambuf@@6B@
# @ extern ??_7strstream@@6B@
# @ extern ??_7strstreambuf@@6B@
# @ extern ??_8fstream@@7Bistream@@@
@@ -416,7 +416,7 @@
@ stub -arch=win32 ??_Eostrstream@@UAEPAXI at Z
@ stub -arch=win32 ??_Estdiobuf@@UAEPAXI at Z
@ stub -arch=win32 ??_Estdiostream@@UAEPAXI at Z
-@ stub -arch=win32 ??_Estreambuf@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Estreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Estreambuf@@UAEPAXI at Z
@ stub -arch=win32 ??_Estrstream@@UAEPAXI at Z
@ stub -arch=win32 ??_Estrstreambuf@@UAEPAXI at Z
@ stub -arch=win32 ??_GIostream_init@@QAEPAXI at Z
@@ -439,7 +439,7 @@
@ stub -arch=win32 ??_Gostrstream@@UAEPAXI at Z
@ stub -arch=win32 ??_Gstdiobuf@@UAEPAXI at Z
@ stub -arch=win32 ??_Gstdiostream@@UAEPAXI at Z
-@ stub -arch=win32 ??_Gstreambuf@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Gstreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gstreambuf@@UAEPAXI at Z
@ stub -arch=win32 ??_Gstrstream@@UAEPAXI at Z
@ stub -arch=win32 ??_Gstrstreambuf@@UAEPAXI at Z
@ cdecl -arch=win32 ?_query_new_handler@@YAP6AHI at ZXZ() msvcrt.?_query_new_handler@@YAP6AHI at ZXZ
@@ -717,8 +717,8 @@
@ cdecl ?set_new_handler@@YAP6AXXZP6AXXZ at Z(ptr) msvcrt.?set_new_handler@@YAP6AXXZP6AXXZ at Z
@ cdecl ?set_terminate@@YAP6AXXZP6AXXZ at Z(ptr) msvcrt.?set_terminate@@YAP6AXXZP6AXXZ at Z
@ cdecl ?set_unexpected@@YAP6AXXZP6AXXZ at Z(ptr) msvcrt.?set_unexpected@@YAP6AXXZP6AXXZ at Z
-@ stub -arch=win32 ?setb at streambuf@@IAEXPAD0H at Z
-@ stub -arch=win64 ?setb at streambuf@@IEAAXPEAD0H at Z
+@ thiscall -arch=win32 ?setb at streambuf@@IAEXPAD0H at Z(ptr ptr ptr long) msvcirt.?setb at streambuf@@IAEXPAD0H at Z
+@ cdecl -arch=win64 ?setb at streambuf@@IEAAXPEAD0H at Z(ptr ptr ptr long) msvcirt.?setb at streambuf@@IEAAXPEAD0H at Z
@ stub -arch=win32 ?setbuf at filebuf@@UAEPAVstreambuf@@PADH at Z
@ stub -arch=win64 ?setbuf at filebuf@@UEAAPEAVstreambuf@@PEADH at Z
@ stub -arch=win32 ?setbuf at fstream@@QAEPAVstreambuf@@PADH at Z
@@ -727,16 +727,16 @@
@ stub -arch=win64 ?setbuf at ifstream@@QEAAPEAVstreambuf@@PEADH at Z
@ stub -arch=win32 ?setbuf at ofstream@@QAEPAVstreambuf@@PADH at Z
@ stub -arch=win64 ?setbuf at ofstream@@QEAAPEAVstreambuf@@PEADH at Z
-@ stub -arch=win32 ?setbuf at streambuf@@UAEPAV1 at PADH@Z
-@ stub -arch=win64 ?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z
+@ thiscall -arch=win32 ?setbuf at streambuf@@UAEPAV1 at PADH@Z(ptr ptr long) msvcirt.?setbuf at streambuf@@UAEPAV1 at PADH@Z
+@ cdecl -arch=win64 ?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z(ptr ptr long) msvcirt.?setbuf at streambuf@@UEAAPEAV1 at PEADH@Z
@ stub -arch=win32 ?setbuf at strstreambuf@@UAEPAVstreambuf@@PADH at Z
@ stub -arch=win64 ?setbuf at strstreambuf@@UEAAPEAVstreambuf@@PEADH at Z
@ stub -arch=win32 ?setf at ios@@QAEJJ at Z
@ stub -arch=win64 ?setf at ios@@QEAAJJ at Z
@ stub -arch=win32 ?setf at ios@@QAEJJJ at Z
@ stub -arch=win64 ?setf at ios@@QEAAJJJ at Z
-@ stub -arch=win32 ?setg at streambuf@@IAEXPAD00 at Z
-@ stub -arch=win64 ?setg at streambuf@@IEAAXPEAD00 at Z
+@ thiscall -arch=win32 ?setg at streambuf@@IAEXPAD00 at Z(ptr ptr ptr ptr) msvcirt.?setg at streambuf@@IAEXPAD00 at Z
+@ cdecl -arch=win64 ?setg at streambuf@@IEAAXPEAD00 at Z(ptr ptr ptr ptr) msvcirt.?setg at streambuf@@IEAAXPEAD00 at Z
@ stub -arch=win32 ?setlock at ios@@QAAXXZ
@ stub -arch=win64 ?setlock at ios@@QEAAXXZ
@ stub -arch=win32 ?setlock at streambuf@@QAEXXZ
@@ -749,8 +749,8 @@
@ stub -arch=win64 ?setmode at ifstream@@QEAAHH at Z
@ stub -arch=win32 ?setmode at ofstream@@QAEHH at Z
@ stub -arch=win64 ?setmode at ofstream@@QEAAHH at Z
-@ stub -arch=win32 ?setp at streambuf@@IAEXPAD0 at Z
-@ stub -arch=win64 ?setp at streambuf@@IEAAXPEAD0 at Z
+@ thiscall -arch=win32 ?setp at streambuf@@IAEXPAD0 at Z(ptr ptr ptr) msvcirt.?setp at streambuf@@IAEXPAD0 at Z
+@ cdecl -arch=win64 ?setp at streambuf@@IEAAXPEAD0 at Z(ptr ptr ptr) msvcirt.?setp at streambuf@@IEAAXPEAD0 at Z
@ stub -arch=win32 ?setrwbuf at stdiobuf@@QAEHHH at Z
@ stub -arch=win64 ?setrwbuf at stdiobuf@@QEAAHHH at Z
@ stub -arch=win32 ?sgetc at streambuf@@QAEHXZ
--
2.1.4
More information about the wine-patches
mailing list