Hans Leidekker : webservices: Implement WS_XML_WRITER_PROPERTY_BUFFERS.

Alexandre Julliard julliard at winehq.org
Mon May 15 16:09:23 CDT 2017


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Mon May 15 09:59:24 2017 +0200

webservices: Implement WS_XML_WRITER_PROPERTY_BUFFERS.

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

---

 dlls/webservices/tests/writer.c | 14 +++++++++-----
 dlls/webservices/writer.c       | 13 +++++++++++++
 2 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/dlls/webservices/tests/writer.c b/dlls/webservices/tests/writer.c
index 0d5fa2a..4dfa1db 100644
--- a/dlls/webservices/tests/writer.c
+++ b/dlls/webservices/tests/writer.c
@@ -1969,6 +1969,7 @@ static void test_WsCopyNode(void)
     WS_XML_WRITER *writer;
     WS_XML_READER *reader;
     WS_XML_BUFFER *buffer;
+    WS_BUFFERS bufs;
     WS_HEAP *heap;
     HRESULT hr;
 
@@ -2049,20 +2050,23 @@ static void test_WsCopyNode(void)
     ok( hr == S_OK, "got %08x\n", hr );
     ok( node->nodeType == WS_XML_NODE_TYPE_BOF, "got %u\n", node->nodeType );
 
-    hr = WsCreateXmlBuffer( heap, NULL, 0, &buffer, NULL );
-    ok( hr == S_OK, "got %08x\n", hr );
-
-    hr = WsSetOutputToBuffer( writer, buffer, NULL, 0, NULL );
+    hr = set_output( writer );
     ok( hr == S_OK, "got %08x\n", hr );
 
     hr = WsCopyNode( writer, reader, NULL );
     ok( hr == S_OK, "got %08x\n", hr );
-    check_output_buffer( buffer, "<v/>", __LINE__ );
+    check_output( writer, "<v/>", __LINE__ );
 
     hr = WsGetReaderNode( reader, &node, NULL );
     ok( hr == S_OK, "got %08x\n", hr );
     ok( node->nodeType == WS_XML_NODE_TYPE_EOF, "got %u\n", node->nodeType );
 
+    memset( &bufs, 0, sizeof(bufs) );
+    hr = WsGetWriterProperty( writer, WS_XML_WRITER_PROPERTY_BUFFERS, &bufs, sizeof(bufs), NULL );
+    ok( hr == S_OK, "got %08x\n", hr );
+    ok( bufs.bufferCount == 1, "got %u\n", bufs.bufferCount );
+    ok( bufs.buffers != NULL, "buffers not set\n" );
+
     WsFreeReader( reader );
     WsFreeWriter( writer );
     WsFreeHeap( heap );
diff --git a/dlls/webservices/writer.c b/dlls/webservices/writer.c
index b9ddb39..421b79d 100644
--- a/dlls/webservices/writer.c
+++ b/dlls/webservices/writer.c
@@ -293,6 +293,19 @@ HRESULT WINAPI WsGetWriterProperty( WS_XML_WRITER *handle, WS_XML_WRITER_PROPERT
         }
         break;
     }
+    case WS_XML_WRITER_PROPERTY_BUFFERS:
+        if (writer->output_buf->bytes.length)
+        {
+            WS_BUFFERS *buffers = buf;
+            if (size != sizeof(*buffers)) hr = E_INVALIDARG;
+            else
+            {
+                buffers->bufferCount = 1;
+                buffers->buffers     = &writer->output_buf->bytes;
+            }
+            break;
+        }
+        /* fall through */
     default:
         hr = prop_get( writer->prop, writer->prop_count, id, buf, size );
     }




More information about the wine-cvs mailing list