[1/9] webservices: Add support for retrieving the output buffer.

Hans Leidekker hans at codeweavers.com
Wed Nov 11 04:02:01 CST 2015


Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
 dlls/webservices/tests/writer.c | 10 +++++-----
 dlls/webservices/writer.c       | 15 ++++++++++++++-
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/dlls/webservices/tests/writer.c b/dlls/webservices/tests/writer.c
index 26b8c78..9f0ae2b 100644
--- a/dlls/webservices/tests/writer.c
+++ b/dlls/webservices/tests/writer.c
@@ -120,13 +120,13 @@ static void test_WsCreateWriter(void)
     ok( hr == S_OK, "got %08x\n", hr );
     ok( max_size == 65536, "got %u\n", max_size );
 
-    buffers.bufferCount = 0xdeadbeef;
-    buffers.buffers = (WS_BYTES *)0xdeadbeef;
+    bytes.length = 0xdeadbeef;
+    bytes.bytes = (BYTE *)0xdeadbeef;
     size = sizeof(buffers);
-    hr = WsGetWriterProperty( writer, WS_XML_WRITER_PROPERTY_BYTES, &buffers, size, NULL );
+    hr = WsGetWriterProperty( writer, WS_XML_WRITER_PROPERTY_BYTES, &bytes, size, NULL );
     ok( hr == S_OK, "got %08x\n", hr );
-    ok( !buffers.bufferCount, "got %u\n", buffers.bufferCount );
-    todo_wine ok( buffers.buffers != NULL, "got %p\n", buffers.buffers );
+    ok( !bytes.length, "got %u\n", bytes.length );
+    ok( bytes.bytes != NULL, "got %p\n", bytes.bytes );
 
     max_size = 0xdeadbeef;
     size = sizeof(max_size);
diff --git a/dlls/webservices/writer.c b/dlls/webservices/writer.c
index e8b5fad..b56c718 100644
--- a/dlls/webservices/writer.c
+++ b/dlls/webservices/writer.c
@@ -293,7 +293,20 @@ HRESULT WINAPI WsGetWriterProperty( WS_XML_WRITER *handle, WS_XML_WRITER_PROPERT
     if (error) FIXME( "ignoring error parameter\n" );
 
     if (!writer->output_type) return WS_E_INVALID_OPERATION;
-    return get_writer_prop( writer, id, buf, size );
+
+    switch (id)
+    {
+    case WS_XML_WRITER_PROPERTY_BYTES:
+    {
+        WS_BYTES *bytes = buf;
+        if (size != sizeof(*bytes)) return E_INVALIDARG;
+        bytes->bytes  = writer->output_buf->ptr;
+        bytes->length = writer->output_buf->size;
+        return S_OK;
+    }
+    default:
+        return get_writer_prop( writer, id, buf, size );
+    }
 }
 
 static void set_output_buffer( struct writer *writer, struct xmlbuf *xmlbuf )
-- 
2.6.2




More information about the wine-patches mailing list