Module: wine Branch: master Commit: 349641575ca7b0db510911e40ab9d705c8632377 URL: http://source.winehq.org/git/wine.git/?a=commit;h=349641575ca7b0db510911e40a...
Author: Hans Leidekker hans@codeweavers.com Date: Wed Nov 11 11:02:01 2015 +0100
webservices: Add support for retrieving the output buffer.
Signed-off-by: Hans Leidekker hans@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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 )