Thomas Pointhuber : combase: Implement WindowsSubstring.
Module: wine Branch: master Commit: 3ba2d995c855de5f3fb164ccdd2a1bdcdb1a3c95 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3ba2d995c855de5f3fb164ccdd... Author: Thomas Pointhuber <thomas.pointhuber(a)gmx.at> Date: Fri Oct 23 03:22:40 2015 +0200 combase: Implement WindowsSubstring. Signed-off-by: Sebastian Lackner <sebastian(a)fds-team.de> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- .../api-ms-win-core-winrt-string-l1-1-0.spec | 2 +- dlls/combase/combase.spec | 2 +- dlls/combase/string.c | 19 +++++++++++++++++++ include/winerror.h | 1 + 4 files changed, 22 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 2361a1d..825980d 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 @@ -21,7 +21,7 @@ @ stdcall WindowsPromoteStringBuffer(ptr ptr) combase.WindowsPromoteStringBuffer @ stub WindowsReplaceString @ stdcall WindowsStringHasEmbeddedNull(ptr ptr) combase.WindowsStringHasEmbeddedNull -@ stub WindowsSubstring +@ stdcall WindowsSubstring(ptr long ptr) combase.WindowsSubstring @ stub WindowsSubstringWithSpecifiedLength @ stub WindowsTrimStringEnd @ stub WindowsTrimStringStart diff --git a/dlls/combase/combase.spec b/dlls/combase/combase.spec index 90f6c9d..bf8607a 100644 --- a/dlls/combase/combase.spec +++ b/dlls/combase/combase.spec @@ -302,7 +302,7 @@ @ stdcall WindowsPromoteStringBuffer(ptr ptr) @ stub WindowsReplaceString @ stdcall WindowsStringHasEmbeddedNull(ptr ptr) -@ stub WindowsSubstring +@ stdcall WindowsSubstring(ptr long ptr) @ stub WindowsSubstringWithSpecifiedLength @ stub WindowsTrimStringEnd @ stub WindowsTrimStringStart diff --git a/dlls/combase/string.c b/dlls/combase/string.c index 7054af6..33e5100 100644 --- a/dlls/combase/string.c +++ b/dlls/combase/string.c @@ -255,6 +255,25 @@ HRESULT WINAPI WindowsStringHasEmbeddedNull(HSTRING str, BOOL *out) } /*********************************************************************** + * WindowsSubstring (combase.@) + */ +HRESULT WINAPI WindowsSubstring(HSTRING str, UINT32 start, HSTRING *out) +{ + struct hstring_private *priv = impl_from_HSTRING(str); + UINT32 len = WindowsGetStringLen(str); + if (out == NULL) + return E_INVALIDARG; + if (start > len) + return E_BOUNDS; + if (start == len) + { + *out = NULL; + return S_OK; + } + return WindowsCreateString(&priv->buffer[start], len - start, out); +} + +/*********************************************************************** * WindowsIsStringEmpty (combase.@) */ BOOL WINAPI WindowsIsStringEmpty(HSTRING str) diff --git a/include/winerror.h b/include/winerror.h index c524798..e9cc7be 100644 --- a/include/winerror.h +++ b/include/winerror.h @@ -2092,6 +2092,7 @@ static inline HRESULT HRESULT_FROM_WIN32(unsigned int x) #define S_FALSE _HRESULT_TYPEDEF_(1) #define E_PENDING _HRESULT_TYPEDEF_(0x8000000A) +#define E_BOUNDS _HRESULT_TYPEDEF_(0x8000000B) #define E_NOTIMPL _HRESULT_TYPEDEF_(0x80004001)
participants (1)
-
Alexandre Julliard