Module: wine Branch: master Commit: 3ba2d995c855de5f3fb164ccdd2a1bdcdb1a3c95 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3ba2d995c855de5f3fb164ccdd...
Author: Thomas Pointhuber thomas.pointhuber@gmx.at Date: Fri Oct 23 03:22:40 2015 +0200
combase: Implement WindowsSubstring.
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 | 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)