Piotr Caban : msvcp90: Added basic_string::_Copy_s implementation.

Alexandre Julliard julliard at winehq.org
Tue Sep 13 12:18:09 CDT 2011


Module: wine
Branch: master
Commit: 6e043df036002dca2a223b44aeb4047be552b857
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6e043df036002dca2a223b44aeb4047be552b857

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Tue Sep 13 10:31:07 2011 +0200

msvcp90: Added basic_string::_Copy_s implementation.

---

 dlls/msvcp90/msvcp90.spec |    8 ++++----
 dlls/msvcp90/string.c     |   38 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec
index d0c29d0..515e05f 100644
--- a/dlls/msvcp90/msvcp90.spec
+++ b/dlls/msvcp90/msvcp90.spec
@@ -2139,12 +2139,12 @@
 @ stub -arch=win64 ?_Copy@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@IEAAX_K0 at Z
 @ stub -arch=win32 ?_Copy@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@IAEXII at Z
 @ stub -arch=win64 ?_Copy@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@IEAAX_K0 at Z
-@ stub -arch=win32 ?_Copy_s@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBEIPADIII at Z
-@ stub -arch=win64 ?_Copy_s@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KPEAD_K11 at Z
+@ thiscall -arch=win32 ?_Copy_s@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBEIPADIII at Z(ptr ptr long long long) MSVCP_basic_string_char_Copy_s
+@ cdecl -arch=win64 ?_Copy_s@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KPEAD_K11 at Z(ptr ptr long long long) MSVCP_basic_string_char_Copy_s
 @ stub -arch=win32 ?_Copy_s@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QBEIPAGIII at Z
 @ stub -arch=win64 ?_Copy_s@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QEBA_KPEAG_K11 at Z
-@ stub -arch=win32 ?_Copy_s@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QBEIPA_WIII at Z
-@ stub -arch=win64 ?_Copy_s@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEBA_KPEA_W_K11 at Z
+@ thiscall -arch=win32 ?_Copy_s@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QBEIPA_WIII at Z(ptr ptr long long long) MSVCP_basic_string_wchar_Copy_s
+@ cdecl -arch=win64 ?_Copy_s@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEBA_KPEA_W_K11 at Z(ptr ptr long long long) MSVCP_basic_string_wchar_Copy_s
 @ cdecl -arch=win32 ?_Copy_s@?$char_traits at D@std@@SAPADPADIPBDI at Z(ptr long ptr long) MSVCP_char_traits_char__Copy_s
 @ cdecl -arch=win64 ?_Copy_s@?$char_traits at D@std@@SAPEADPEAD_KPEBD1 at Z(ptr long ptr long) MSVCP_char_traits_char__Copy_s
 @ cdecl -arch=win32 ?_Copy_s@?$char_traits at G@std@@SAPAGPAGIPBGI at Z(ptr long ptr long) MSVCP_char_traits_short__Copy_s
diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c
index 5664e87..47c0c03 100644
--- a/dlls/msvcp90/string.c
+++ b/dlls/msvcp90/string.c
@@ -741,6 +741,25 @@ void __thiscall MSVCP_basic_string_char_Chassign(basic_string_char *this,
     MSVCP_char_traits_char_assignn(basic_string_char_ptr(this)+off, count, ch);
 }
 
+/* ?_Copy_s@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBEIPADIII at Z */
+/* ?_Copy_s@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KPEAD_K11 at Z */
+DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_Copy_s, 20)
+MSVCP_size_t __thiscall MSVCP_basic_string_char_Copy_s(const basic_string_char *this,
+        char *dest, MSVCP_size_t size, MSVCP_size_t off, MSVCP_size_t count)
+{
+    TRACE("%p %p %lu %lu %lu\n", this, dest, size, off, count);
+
+    if(this->size < off)
+        MSVCP__String_base_Xran();
+
+    if(count > this->size-off)
+        count = this->size-off;
+
+    MSVCP_char_traits_char__Copy_s(dest, size,
+            basic_string_char_const_ptr(this)+off, count);
+    return count;
+}
+
 /* ?c_str@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBEPBDXZ */
 /* ?c_str@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBAPEBDXZ */
 /* ?data@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBEPBDXZ */
@@ -1710,6 +1729,25 @@ void __thiscall MSVCP_basic_string_wchar_Chassign(basic_string_wchar *this,
     MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this)+off, count, ch);
 }
 
+/* ?_Copy_s@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QBEIPA_WIII at Z */
+/* ?_Copy_s@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEBA_KPEA_W_K11 at Z */
+DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_Copy_s, 20)
+MSVCP_size_t __thiscall MSVCP_basic_string_wchar_Copy_s(const basic_string_wchar *this,
+        wchar_t *dest, MSVCP_size_t size, MSVCP_size_t off, MSVCP_size_t count)
+{
+    TRACE("%p %p %lu %lu %lu\n", this, dest, size, off, count);
+
+    if(this->size < off)
+        MSVCP__String_base_Xran();
+
+    if(count > this->size-off)
+        count = this->size-off;
+
+    MSVCP_char_traits_wchar__Copy_s(dest, size,
+            basic_string_wchar_const_ptr(this)+off, count);
+    return count;
+}
+
 /* ?c_str@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QBEPB_WXZ */
 /* ?c_str@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEBAPEB_WXZ */
 /* ?data@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QBEPB_WXZ */




More information about the wine-cvs mailing list