Module: wine Branch: master Commit: 63f95fedfe29572c6c369ff38ba10e7539952124 URL: http://source.winehq.org/git/wine.git/?a=commit;h=63f95fedfe29572c6c369ff38b...
Author: Sebastian Lackner sebastian@fds-team.de Date: Thu Oct 29 05:07:17 2015 +0100
combase: Implement WindowsConcatString.
Signed-off-by: Sebastian Lackner sebastian@fds-team.de Signed-off-by: Alexandre Julliard julliard@winehq.org
---
.../api-ms-win-core-winrt-string-l1-1-0.spec | 2 +- dlls/combase/combase.spec | 2 +- dlls/combase/string.c | 30 ++++++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/dlls/api-ms-win-core-winrt-string-l1-1-0/api-ms-win-core-winrt-string-l1-1-0.spec b/dlls/api-ms-win-core-winrt-string-l1-1-0/api-ms-win-core-winrt-string-l1-1-0.spec index dc67deb..fa048d8 100644 --- a/dlls/api-ms-win-core-winrt-string-l1-1-0/api-ms-win-core-winrt-string-l1-1-0.spec +++ b/dlls/api-ms-win-core-winrt-string-l1-1-0/api-ms-win-core-winrt-string-l1-1-0.spec @@ -7,7 +7,7 @@ @ stub HSTRING_UserUnmarshal @ stub HSTRING_UserUnmarshal64 @ stub WindowsCompareStringOrdinal -@ stub WindowsConcatString +@ stdcall WindowsConcatString(ptr ptr ptr) combase.WindowsConcatString @ stdcall WindowsCreateString(wstr long ptr) combase.WindowsCreateString @ stdcall WindowsCreateStringReference(wstr long ptr ptr) combase.WindowsCreateStringReference @ stdcall WindowsDeleteString(ptr) combase.WindowsDeleteString diff --git a/dlls/combase/combase.spec b/dlls/combase/combase.spec index fcd5947..6a76b2d 100644 --- a/dlls/combase/combase.spec +++ b/dlls/combase/combase.spec @@ -288,7 +288,7 @@ @ stdcall WdtpInterfacePointer_UserUnmarshal(ptr ptr ptr ptr) ole32.WdtpInterfacePointer_UserUnmarshal @ stub WdtpInterfacePointer_UserUnmarshal64 @ stub WindowsCompareStringOrdinal -@ stub WindowsConcatString +@ stdcall WindowsConcatString(ptr ptr ptr) @ stdcall WindowsCreateString(wstr long ptr) @ stdcall WindowsCreateStringReference(wstr long ptr ptr) @ stdcall WindowsDeleteString(ptr) diff --git a/dlls/combase/string.c b/dlls/combase/string.c index 99cd591..dd7c8e9 100644 --- a/dlls/combase/string.c +++ b/dlls/combase/string.c @@ -330,6 +330,36 @@ HRESULT WINAPI WindowsSubstringWithSpecifiedLength(HSTRING str, UINT32 start, UI }
/*********************************************************************** + * WindowsConcatString (combase.@) + */ +HRESULT WINAPI WindowsConcatString(HSTRING str1, HSTRING str2, HSTRING *out) +{ + struct hstring_private *priv1 = impl_from_HSTRING(str1); + struct hstring_private *priv2 = impl_from_HSTRING(str2); + struct hstring_private *priv; + + TRACE("(%p, %p, %p)\n", str1, str2, out); + + if (out == NULL) + return E_INVALIDARG; + if (str1 == NULL) + return WindowsDuplicateString(str2, out); + if (str2 == NULL) + return WindowsDuplicateString(str1, out); + if (!priv1->length && !priv2->length) + { + *out = NULL; + return S_OK; + } + if (!alloc_string(priv1->length + priv2->length, out)) + return E_OUTOFMEMORY; + priv = impl_from_HSTRING(*out); + memcpy(priv->buffer, priv1->buffer, priv1->length * sizeof(*priv1->buffer)); + memcpy(priv->buffer + priv1->length, priv2->buffer, priv2->length * sizeof(*priv2->buffer)); + return S_OK; +} + +/*********************************************************************** * WindowsIsStringEmpty (combase.@) */ BOOL WINAPI WindowsIsStringEmpty(HSTRING str)