Piotr Caban : msvcp90: Added basic_string::_Copy_s implementation.
Module: wine Branch: master Commit: 6e043df036002dca2a223b44aeb4047be552b857 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6e043df036002dca2a223b44ae... Author: Piotr Caban <piotr(a)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(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@IEAAX_K0(a)Z @ stub -arch=win32 ?_Copy@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@IAEXII(a)Z @ stub -arch=win64 ?_Copy@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@IEAAX_K0(a)Z -@ stub -arch=win32 ?_Copy_s@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBEIPADIII(a)Z -@ stub -arch=win64 ?_Copy_s@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEBA_KPEAD_K11(a)Z +@ thiscall -arch=win32 ?_Copy_s@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBEIPADIII(a)Z(ptr ptr long long long) MSVCP_basic_string_char_Copy_s +@ cdecl -arch=win64 ?_Copy_s@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEBA_KPEAD_K11(a)Z(ptr ptr long long long) MSVCP_basic_string_char_Copy_s @ stub -arch=win32 ?_Copy_s@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QBEIPAGIII(a)Z @ stub -arch=win64 ?_Copy_s@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QEBA_KPEAG_K11(a)Z -@ stub -arch=win32 ?_Copy_s@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QBEIPA_WIII(a)Z -@ stub -arch=win64 ?_Copy_s@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEBA_KPEA_W_K11(a)Z +@ thiscall -arch=win32 ?_Copy_s@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QBEIPA_WIII(a)Z(ptr ptr long long long) MSVCP_basic_string_wchar_Copy_s +@ cdecl -arch=win64 ?_Copy_s@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEBA_KPEA_W_K11(a)Z(ptr ptr long long long) MSVCP_basic_string_wchar_Copy_s @ cdecl -arch=win32 ?_Copy_s@?$char_traits(a)D@std@@SAPADPADIPBDI(a)Z(ptr long ptr long) MSVCP_char_traits_char__Copy_s @ cdecl -arch=win64 ?_Copy_s@?$char_traits(a)D@std@@SAPEADPEAD_KPEBD1(a)Z(ptr long ptr long) MSVCP_char_traits_char__Copy_s @ cdecl -arch=win32 ?_Copy_s@?$char_traits(a)G@std@@SAPAGPAGIPBGI(a)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(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBEIPADIII(a)Z */ +/* ?_Copy_s@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEBA_KPEAD_K11(a)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(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBEPBDXZ */ /* ?c_str@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEBAPEBDXZ */ /* ?data@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)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(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QBEIPA_WIII(a)Z */ +/* ?_Copy_s@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEBA_KPEA_W_K11(a)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(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QBEPB_WXZ */ /* ?c_str@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEBAPEB_WXZ */ /* ?data@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QBEPB_WXZ */
participants (1)
-
Alexandre Julliard