Hans Leidekker : webservices: Allow structures to be passed by value in WsWriteType.

Alexandre Julliard julliard at winehq.org
Fri Aug 26 10:18:11 CDT 2016


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Thu Aug 25 20:02:48 2016 +0200

webservices: Allow structures to be passed by value in WsWriteType.

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/webservices/tests/writer.c | 15 +++++++++++++++
 dlls/webservices/writer.c       |  4 +---
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/dlls/webservices/tests/writer.c b/dlls/webservices/tests/writer.c
index 128e66e..8888c69 100644
--- a/dlls/webservices/tests/writer.c
+++ b/dlls/webservices/tests/writer.c
@@ -791,6 +791,21 @@ static void test_simple_struct_type(void)
     ok( hr == S_OK, "got %08x\n", hr );
     check_output( writer, "<struct>value</struct>", __LINE__ );
 
+    /* required value */
+    hr = set_output( writer );
+    ok( hr == S_OK, "got %08x\n", hr );
+
+    hr = WsWriteStartElement( writer, NULL, &localname, &ns, NULL );
+    ok( hr == S_OK, "got %08x\n", hr );
+
+    hr = WsWriteType( writer, WS_ELEMENT_CONTENT_TYPE_MAPPING, WS_STRUCT_TYPE, &s,
+                      WS_WRITE_REQUIRED_VALUE, test, sizeof(*test), NULL );
+    ok( hr == S_OK, "got %08x\n", hr );
+
+    hr = WsWriteEndElement( writer, NULL );
+    ok( hr == S_OK, "got %08x\n", hr );
+    check_output( writer, "<struct>value</struct>", __LINE__ );
+
     hr = set_output( writer );
     ok( hr == S_OK, "got %08x\n", hr );
 
diff --git a/dlls/webservices/writer.c b/dlls/webservices/writer.c
index 89f9465..8872a37 100644
--- a/dlls/webservices/writer.c
+++ b/dlls/webservices/writer.c
@@ -1695,9 +1695,7 @@ static HRESULT write_type( struct writer *writer, WS_TYPE_MAPPING mapping, WS_TY
     case WS_STRUCT_TYPE:
     {
         const void *ptr;
-
-        if (!desc || option == WS_WRITE_REQUIRED_VALUE) return E_INVALIDARG;
-
+        if (!desc) return E_INVALIDARG;
         if (!option) option = WS_WRITE_REQUIRED_POINTER;
         if ((hr = get_value_ptr( option, value, size, (const void **)&ptr )) != S_OK) return hr;
         return write_type_struct( writer, mapping, desc, ptr );




More information about the wine-cvs mailing list