Thomas Pointhuber : combase: Implement WindowsSubstring.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Oct 23 09:57:27 CDT 2015


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

Author: Thomas Pointhuber <thomas.pointhuber at gmx.at>
Date:   Fri Oct 23 03:22:40 2015 +0200

combase: Implement WindowsSubstring.

Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Alexandre Julliard <julliard at 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)




More information about the wine-cvs mailing list