[2/5] webservices: Support WS_STRING values in WsSetHeader.

Hans Leidekker hans at codeweavers.com
Tue Aug 16 05:30:33 CDT 2016


Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
 dlls/webservices/msg.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/dlls/webservices/msg.c b/dlls/webservices/msg.c
index 904d490..487222e 100644
--- a/dlls/webservices/msg.c
+++ b/dlls/webservices/msg.c
@@ -598,6 +598,24 @@ static HRESULT alloc_header( WS_HEADER_TYPE type, WS_TYPE value_type, WS_WRITE_O
         memcpy( header->text.value.bytes, str->bytes, str->length );
         break;
     }
+    case WS_STRING_TYPE:
+    {
+        int len;
+        const WS_STRING *str = value;
+
+        if (option != WS_WRITE_REQUIRED_VALUE)
+        {
+            FIXME( "unhandled write option %u\n", option );
+            return E_NOTIMPL;
+        }
+        if (size != sizeof(*str)) return E_INVALIDARG;
+        len = WideCharToMultiByte( CP_UTF8, 0, str->chars, str->length, NULL, 0, NULL, NULL );
+        if (!(header = heap_alloc( sizeof(*header) + len ))) return E_OUTOFMEMORY;
+        set_utf8_text( &header->text, (BYTE *)(header + 1), len );
+        WideCharToMultiByte( CP_UTF8, 0, str->chars, str->length, (char *)header->text.value.bytes,
+                             len, NULL, NULL );
+        break;
+    }
     default:
         FIXME( "unhandled type %u\n", value_type );
         return E_NOTIMPL;
-- 
2.1.4




More information about the wine-patches mailing list