Wine-devel
Threads by month
- ----- 2026 -----
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
October 2018
- 60 participants
- 608 discussions
Signed-off-by: Piotr Caban <piotr(a)codeweavers.com>
---
dlls/msvcr100/msvcr100.spec | 2 +-
dlls/msvcr110/msvcr110.spec | 2 +-
dlls/msvcr120/msvcr120.spec | 2 +-
dlls/msvcr70/msvcr70.spec | 2 +-
dlls/msvcr71/msvcr71.spec | 2 +-
dlls/msvcr80/msvcr80.spec | 2 +-
dlls/msvcr90/msvcr90.spec | 2 +-
dlls/msvcrt/msvcrt.spec | 2 +-
dlls/msvcrt/wcs.c | 8 ++++++++
dlls/ucrtbase/ucrtbase.spec | 2 +-
10 files changed, 17 insertions(+), 9 deletions(-)
1
0
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45922
Signed-off-by: Piotr Caban <piotr(a)codeweavers.com>
---
.../api-ms-win-crt-convert-l1-1-0.spec | 2 +-
dlls/msvcr100/msvcr100.spec | 4 ++--
dlls/msvcr110/msvcr110.spec | 4 ++--
dlls/msvcr120/msvcr120.spec | 4 ++--
dlls/msvcr120_app/msvcr120_app.spec | 2 +-
dlls/msvcr70/msvcr70.spec | 2 +-
dlls/msvcr80/msvcr80.spec | 4 ++--
dlls/msvcr90/msvcr90.spec | 4 ++--
dlls/msvcrt/msvcrt.spec | 4 ++--
dlls/msvcrt/string.c | 8 ++++++++
dlls/ucrtbase/ucrtbase.spec | 4 ++--
11 files changed, 25 insertions(+), 17 deletions(-)
1
0
wine64 was using IMAGE_NT_HEADERS to access header information
regardless of the execution type; hence it would use
IMAGE_OPTIONAL_HEADER64 for a 32bit app.
This could result in an overflow and a request to mmap for a huge amount
of memory causing an out of memory error.
This patch ensures IMAGE_OPTIONAL_HEADER32 is used for a 32-bit app
and IMAGE_OPTIONAL_HEADER64 is used for a 64-bit app
Signed-off-by: Brendan McGrath <brendan(a)redmandi.com>
---
This fix is pretty much a copy and paste of code from server/mapping.c. But I'm
not sure if it is the right way to go. There may already be a sanitized
location for these values available within virtual_alloc_thread_stack
that I just couldn't find.
dlls/ntdll/virtual.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
index af1509eae5d..8acea14af93 100644
--- a/dlls/ntdll/virtual.c
+++ b/dlls/ntdll/virtual.c
@@ -1933,9 +1933,26 @@ NTSTATUS virtual_alloc_thread_stack( TEB *teb, SIZE_T reserve_size, SIZE_T commi
if (!reserve_size || !commit_size)
{
- IMAGE_NT_HEADERS *nt = RtlImageNtHeader( NtCurrentTeb()->Peb->ImageBaseAddress );
- if (!reserve_size) reserve_size = nt->OptionalHeader.SizeOfStackReserve;
- if (!commit_size) commit_size = nt->OptionalHeader.SizeOfStackCommit;
+ struct nt
+ {
+ DWORD Signature;
+ IMAGE_FILE_HEADER FileHeader;
+ union
+ {
+ IMAGE_OPTIONAL_HEADER32 hdr32;
+ IMAGE_OPTIONAL_HEADER64 hdr64;
+ } opt;
+ };
+
+ struct nt *nt = (struct nt*) RtlImageNtHeader( NtCurrentTeb()->Peb->ImageBaseAddress );
+ if (nt->opt.hdr32.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
+ if (!reserve_size) reserve_size = nt->opt.hdr32.SizeOfStackReserve;
+ if (!commit_size) commit_size = nt->opt.hdr32.SizeOfStackCommit;
+ } else {
+ if (!reserve_size) reserve_size = nt->opt.hdr64.SizeOfStackReserve;
+ if (!commit_size) commit_size = nt->opt.hdr64.SizeOfStackCommit;
+ }
+ TRACE("reserve_size: %lu, commit_size: %lu", reserve_size, commit_size);
}
size = max( reserve_size, commit_size );
--
2.17.1
3
4
[PATCH 4/4] webservices: Add more tests for default envelope and adressing versions.
by Hans Leidekker 17 Oct '18
by Hans Leidekker 17 Oct '18
17 Oct '18
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/webservices/tests/msg.c | 47 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
diff --git a/dlls/webservices/tests/msg.c b/dlls/webservices/tests/msg.c
index 22d69ece2c..766c2c5acf 100644
--- a/dlls/webservices/tests/msg.c
+++ b/dlls/webservices/tests/msg.c
@@ -104,6 +104,7 @@ static void test_WsCreateMessageForChannel(void)
hr = WsCreateMessageForChannel( NULL, NULL, 0, &msg, NULL );
ok( hr == E_INVALIDARG, "got %08x\n", hr );
+ /* HTTP */
hr = WsCreateChannel( WS_CHANNEL_TYPE_REQUEST, WS_HTTP_CHANNEL_BINDING, NULL, 0, NULL,
&channel, NULL );
ok( hr == S_OK, "got %08x\n", hr );
@@ -154,6 +155,52 @@ static void test_WsCreateMessageForChannel(void)
WsFreeChannel( channel );
WsFreeMessage( msg );
+
+ /* TCP */
+ hr = WsCreateChannel( WS_CHANNEL_TYPE_DUPLEX_SESSION, WS_TCP_CHANNEL_BINDING, NULL, 0, NULL,
+ &channel, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ hr = WsCreateMessageForChannel( channel, NULL, 0, &msg, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ env_version = 0xdeadbeef;
+ hr = WsGetMessageProperty( msg, WS_MESSAGE_PROPERTY_ENVELOPE_VERSION, &env_version,
+ sizeof(env_version), NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+ ok( env_version == WS_ENVELOPE_VERSION_SOAP_1_2, "got %u\n", env_version );
+
+ addr_version = 0xdeadbeef;
+ hr = WsGetMessageProperty( msg, WS_MESSAGE_PROPERTY_ADDRESSING_VERSION, &addr_version,
+ sizeof(addr_version), NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+ ok( addr_version == WS_ADDRESSING_VERSION_1_0, "got %u\n", addr_version );
+
+ WsFreeChannel( channel );
+ WsFreeMessage( msg );
+
+ /* UDP */
+ hr = WsCreateChannel( WS_CHANNEL_TYPE_DUPLEX, WS_UDP_CHANNEL_BINDING, NULL, 0, NULL,
+ &channel, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ hr = WsCreateMessageForChannel( channel, NULL, 0, &msg, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ env_version = 0xdeadbeef;
+ hr = WsGetMessageProperty( msg, WS_MESSAGE_PROPERTY_ENVELOPE_VERSION, &env_version,
+ sizeof(env_version), NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+ ok( env_version == WS_ENVELOPE_VERSION_SOAP_1_2, "got %u\n", env_version );
+
+ addr_version = 0xdeadbeef;
+ hr = WsGetMessageProperty( msg, WS_MESSAGE_PROPERTY_ADDRESSING_VERSION, &addr_version,
+ sizeof(addr_version), NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+ ok( addr_version == WS_ADDRESSING_VERSION_1_0, "got %u\n", addr_version );
+
+ WsFreeChannel( channel );
+ WsFreeMessage( msg );
}
static void test_WsInitializeMessage(void)
--
2.11.0
1
0
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/webservices/channel.c | 37 +++---
dlls/webservices/error.c | 15 ++-
dlls/webservices/heap.c | 5 +-
dlls/webservices/listener.c | 82 +++++++------
dlls/webservices/msg.c | 222 ++++++++++++++-------------------
dlls/webservices/proxy.c | 17 +--
dlls/webservices/reader.c | 264 +++++++++++++++++----------------------
dlls/webservices/writer.c | 293 +++++++++++++++++++-------------------------
8 files changed, 424 insertions(+), 511 deletions(-)
diff --git a/dlls/webservices/channel.c b/dlls/webservices/channel.c
index 5d3ca347da..464645b095 100644
--- a/dlls/webservices/channel.c
+++ b/dlls/webservices/channel.c
@@ -518,6 +518,7 @@ void WINAPI WsFreeChannel( WS_CHANNEL *handle )
HRESULT WINAPI WsResetChannel( WS_CHANNEL *handle, WS_ERROR *error )
{
struct channel *channel = (struct channel *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p\n", handle, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -533,15 +534,13 @@ HRESULT WINAPI WsResetChannel( WS_CHANNEL *handle, WS_ERROR *error )
}
if (channel->state != WS_CHANNEL_STATE_CREATED && channel->state != WS_CHANNEL_STATE_CLOSED)
- {
- LeaveCriticalSection( &channel->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- reset_channel( channel );
+ hr = WS_E_INVALID_OPERATION;
+ else
+ reset_channel( channel );
LeaveCriticalSection( &channel->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
/**************************************************************************
@@ -583,6 +582,7 @@ HRESULT WINAPI WsGetChannelProperty( WS_CHANNEL *handle, WS_CHANNEL_PROPERTY_ID
}
LeaveCriticalSection( &channel->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -611,6 +611,7 @@ HRESULT WINAPI WsSetChannelProperty( WS_CHANNEL *handle, WS_CHANNEL_PROPERTY_ID
hr = prop_set( channel->prop, channel->prop_count, id, value, size );
LeaveCriticalSection( &channel->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -653,15 +654,11 @@ HRESULT WINAPI WsOpenChannel( WS_CHANNEL *handle, const WS_ENDPOINT_ADDRESS *end
return E_INVALIDARG;
}
- if (channel->state != WS_CHANNEL_STATE_CREATED)
- {
- LeaveCriticalSection( &channel->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- hr = open_channel( channel, endpoint );
+ if (channel->state != WS_CHANNEL_STATE_CREATED) hr = WS_E_INVALID_OPERATION;
+ else hr = open_channel( channel, endpoint );
LeaveCriticalSection( &channel->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -734,6 +731,7 @@ HRESULT WINAPI WsShutdownSessionChannel( WS_CHANNEL *handle, const WS_ASYNC_CONT
hr = shutdown_session( channel );
LeaveCriticalSection( &channel->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -749,6 +747,7 @@ static void close_channel( struct channel *channel )
HRESULT WINAPI WsCloseChannel( WS_CHANNEL *handle, const WS_ASYNC_CONTEXT *ctx, WS_ERROR *error )
{
struct channel *channel = (struct channel *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p %p\n", handle, ctx, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -767,7 +766,8 @@ HRESULT WINAPI WsCloseChannel( WS_CHANNEL *handle, const WS_ASYNC_CONTEXT *ctx,
close_channel( channel );
LeaveCriticalSection( &channel->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
static HRESULT parse_http_url( const WCHAR *url, ULONG len, URL_COMPONENTS *uc )
@@ -1348,6 +1348,7 @@ HRESULT WINAPI WsSendMessage( WS_CHANNEL *handle, WS_MESSAGE *msg, const WS_MESS
done:
LeaveCriticalSection( &channel->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1388,6 +1389,7 @@ HRESULT WINAPI WsSendReplyMessage( WS_CHANNEL *handle, WS_MESSAGE *msg, const WS
done:
LeaveCriticalSection( &channel->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1959,6 +1961,7 @@ HRESULT WINAPI WsReceiveMessage( WS_CHANNEL *handle, WS_MESSAGE *msg, const WS_M
hr = receive_message( channel, msg, desc, count, option, read_option, heap, value, size, index );
LeaveCriticalSection( &channel->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1991,6 +1994,7 @@ HRESULT WINAPI WsReadMessageStart( WS_CHANNEL *handle, WS_MESSAGE *msg, const WS
}
LeaveCriticalSection( &channel->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -2020,6 +2024,7 @@ HRESULT WINAPI WsReadMessageEnd( WS_CHANNEL *handle, WS_MESSAGE *msg, const WS_A
hr = WsReadEnvelopeEnd( msg, NULL );
LeaveCriticalSection( &channel->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -2052,6 +2057,7 @@ HRESULT WINAPI WsWriteMessageStart( WS_CHANNEL *handle, WS_MESSAGE *msg, const W
done:
LeaveCriticalSection( &channel->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -2081,6 +2087,7 @@ HRESULT WINAPI WsWriteMessageEnd( WS_CHANNEL *handle, WS_MESSAGE *msg, const WS_
if ((hr = WsWriteEnvelopeEnd( msg, NULL )) == S_OK) hr = send_message( channel, msg );
LeaveCriticalSection( &channel->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
diff --git a/dlls/webservices/error.c b/dlls/webservices/error.c
index 970c12e1e3..03f71a6489 100644
--- a/dlls/webservices/error.c
+++ b/dlls/webservices/error.c
@@ -151,6 +151,7 @@ void WINAPI WsFreeError( WS_ERROR *handle )
HRESULT WINAPI WsResetError( WS_ERROR *handle )
{
struct error *error = (struct error *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p\n", handle );
@@ -167,7 +168,8 @@ HRESULT WINAPI WsResetError( WS_ERROR *handle )
reset_error( error );
LeaveCriticalSection( &error->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
/**************************************************************************
@@ -194,6 +196,7 @@ HRESULT WINAPI WsGetErrorProperty( WS_ERROR *handle, WS_ERROR_PROPERTY_ID id, vo
hr = prop_get( error->prop, error->prop_count, id, buf, size );
LeaveCriticalSection( &error->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -227,14 +230,10 @@ HRESULT WINAPI WsSetErrorProperty( WS_ERROR *handle, WS_ERROR_PROPERTY_ID id, co
return E_INVALIDARG;
}
- if (id == WS_ERROR_PROPERTY_LANGID)
- {
- LeaveCriticalSection( &error->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- hr = prop_set( error->prop, error->prop_count, id, value, size );
+ if (id == WS_ERROR_PROPERTY_LANGID) hr = WS_E_INVALID_OPERATION;
+ else hr = prop_set( error->prop, error->prop_count, id, value, size );
LeaveCriticalSection( &error->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
diff --git a/dlls/webservices/heap.c b/dlls/webservices/heap.c
index 93c8c4499a..1e22a24b34 100644
--- a/dlls/webservices/heap.c
+++ b/dlls/webservices/heap.c
@@ -260,6 +260,7 @@ void WINAPI WsFreeHeap( WS_HEAP *handle )
HRESULT WINAPI WsResetHeap( WS_HEAP *handle, WS_ERROR *error )
{
struct heap *heap = (struct heap *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p\n", handle, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -277,7 +278,8 @@ HRESULT WINAPI WsResetHeap( WS_HEAP *handle, WS_ERROR *error )
reset_heap( heap );
LeaveCriticalSection( &heap->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
/**************************************************************************
@@ -317,6 +319,7 @@ HRESULT WINAPI WsGetHeapProperty( WS_HEAP *handle, WS_HEAP_PROPERTY_ID id, void
}
LeaveCriticalSection( &heap->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
diff --git a/dlls/webservices/listener.c b/dlls/webservices/listener.c
index 2e8286e144..e06b39447f 100644
--- a/dlls/webservices/listener.c
+++ b/dlls/webservices/listener.c
@@ -469,15 +469,11 @@ HRESULT WINAPI WsOpenListener( WS_LISTENER *handle, WS_STRING *url, const WS_ASY
return E_INVALIDARG;
}
- if (listener->state != WS_LISTENER_STATE_CREATED)
- {
- LeaveCriticalSection( &listener->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- hr = open_listener( listener, url );
+ if (listener->state != WS_LISTENER_STATE_CREATED) hr = WS_E_INVALID_OPERATION;
+ else hr = open_listener( listener, url );
LeaveCriticalSection( &listener->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -493,6 +489,7 @@ static void close_listener( struct listener *listener )
HRESULT WINAPI WsCloseListener( WS_LISTENER *handle, const WS_ASYNC_CONTEXT *ctx, WS_ERROR *error )
{
struct listener *listener = (struct listener *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p %p\n", handle, ctx, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -511,7 +508,8 @@ HRESULT WINAPI WsCloseListener( WS_LISTENER *handle, const WS_ASYNC_CONTEXT *ctx
close_listener( listener );
LeaveCriticalSection( &listener->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
/**************************************************************************
@@ -520,6 +518,7 @@ HRESULT WINAPI WsCloseListener( WS_LISTENER *handle, const WS_ASYNC_CONTEXT *ctx
HRESULT WINAPI WsResetListener( WS_LISTENER *handle, WS_ERROR *error )
{
struct listener *listener = (struct listener *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p\n", handle, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -535,15 +534,13 @@ HRESULT WINAPI WsResetListener( WS_LISTENER *handle, WS_ERROR *error )
}
if (listener->state != WS_LISTENER_STATE_CREATED && listener->state != WS_LISTENER_STATE_CLOSED)
- {
- LeaveCriticalSection( &listener->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- reset_listener( listener );
+ hr = WS_E_INVALID_OPERATION;
+ else
+ reset_listener( listener );
LeaveCriticalSection( &listener->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
/**************************************************************************
@@ -590,6 +587,7 @@ HRESULT WINAPI WsGetListenerProperty( WS_LISTENER *handle, WS_LISTENER_PROPERTY_
}
LeaveCriticalSection( &listener->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -618,6 +616,7 @@ HRESULT WINAPI WsSetListenerProperty( WS_LISTENER *handle, WS_LISTENER_PROPERTY_
hr = prop_set( listener->prop, listener->prop_count, id, value, size );
LeaveCriticalSection( &listener->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -645,37 +644,40 @@ HRESULT WINAPI WsAcceptChannel( WS_LISTENER *handle, WS_CHANNEL *channel_handle,
return E_INVALIDARG;
}
- if (listener->state != WS_LISTENER_STATE_OPEN || listener->channel)
+ if (listener->state != WS_LISTENER_STATE_OPEN || listener->channel) hr = WS_E_INVALID_OPERATION;
+ else
{
- LeaveCriticalSection( &listener->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- wait = listener->wait;
- cancel = listener->cancel;
- listener->channel = channel_handle;
+ wait = listener->wait;
+ cancel = listener->cancel;
+ listener->channel = channel_handle;
- switch (listener->binding)
- {
- case WS_TCP_CHANNEL_BINDING:
- {
- SOCKET socket = listener->u.tcp.socket;
+ switch (listener->binding)
+ {
+ case WS_TCP_CHANNEL_BINDING:
+ {
+ SOCKET socket = listener->u.tcp.socket;
- LeaveCriticalSection( &listener->cs );
- return channel_accept_tcp( socket, wait, cancel, channel_handle );
- }
- case WS_UDP_CHANNEL_BINDING:
- {
- SOCKET socket = listener->u.udp.socket;
+ LeaveCriticalSection( &listener->cs );
+ hr = channel_accept_tcp( socket, wait, cancel, channel_handle );
+ TRACE( "returning %08x\n", hr );
+ return hr;
+ }
+ case WS_UDP_CHANNEL_BINDING:
+ {
+ SOCKET socket = listener->u.udp.socket;
- LeaveCriticalSection( &listener->cs );
- return channel_accept_udp( socket, wait, cancel, channel_handle );
- }
- default:
- FIXME( "listener binding %u not supported\n", listener->binding );
- break;
+ LeaveCriticalSection( &listener->cs );
+ hr = channel_accept_udp( socket, wait, cancel, channel_handle );
+ TRACE( "returning %08x\n", hr );
+ return hr;
+ }
+ default:
+ FIXME( "listener binding %u not supported\n", listener->binding );
+ break;
+ }
}
LeaveCriticalSection( &listener->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
diff --git a/dlls/webservices/msg.c b/dlls/webservices/msg.c
index 48b4ec561d..4ccf82eacc 100644
--- a/dlls/webservices/msg.c
+++ b/dlls/webservices/msg.c
@@ -294,6 +294,7 @@ void WINAPI WsFreeMessage( WS_MESSAGE *handle )
HRESULT WINAPI WsResetMessage( WS_MESSAGE *handle, WS_ERROR *error )
{
struct msg *msg = (struct msg *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p\n", handle, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -311,7 +312,8 @@ HRESULT WINAPI WsResetMessage( WS_MESSAGE *handle, WS_ERROR *error )
reset_msg( msg );
LeaveCriticalSection( &msg->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
/**************************************************************************
@@ -383,6 +385,7 @@ HRESULT WINAPI WsGetMessageProperty( WS_MESSAGE *handle, WS_MESSAGE_PROPERTY_ID
}
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -423,6 +426,7 @@ HRESULT WINAPI WsSetMessageProperty( WS_MESSAGE *handle, WS_MESSAGE_PROPERTY_ID
}
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -452,25 +456,23 @@ HRESULT WINAPI WsAddressMessage( WS_MESSAGE *handle, const WS_ENDPOINT_ADDRESS *
return E_INVALIDARG;
}
- if (msg->state < WS_MESSAGE_STATE_INITIALIZED || msg->is_addressed)
- {
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if (addr && addr->url.length)
+ if (msg->state < WS_MESSAGE_STATE_INITIALIZED || msg->is_addressed) hr = WS_E_INVALID_OPERATION;
+ else
{
- if (!(msg->addr.chars = heap_alloc( addr->url.length * sizeof(WCHAR) ))) hr = E_OUTOFMEMORY;
- else
+ if (addr && addr->url.length)
{
- memcpy( msg->addr.chars, addr->url.chars, addr->url.length * sizeof(WCHAR) );
- msg->addr.length = addr->url.length;
+ if (!(msg->addr.chars = heap_alloc( addr->url.length * sizeof(WCHAR) ))) hr = E_OUTOFMEMORY;
+ else
+ {
+ memcpy( msg->addr.chars, addr->url.chars, addr->url.length * sizeof(WCHAR) );
+ msg->addr.length = addr->url.length;
+ }
}
}
-
if (hr == S_OK) msg->is_addressed = TRUE;
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -743,20 +745,16 @@ HRESULT WINAPI WsWriteEnvelopeStart( WS_MESSAGE *handle, WS_XML_WRITER *writer,
return E_INVALIDARG;
}
- if (msg->state != WS_MESSAGE_STATE_INITIALIZED)
+ if (msg->state != WS_MESSAGE_STATE_INITIALIZED) hr = WS_E_INVALID_OPERATION;
+ else if ((hr = write_envelope( msg )) == S_OK &&
+ (hr = write_envelope_start( msg, writer )) == S_OK)
{
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
+ msg->writer_body = writer;
+ msg->state = WS_MESSAGE_STATE_WRITING;
}
- if ((hr = write_envelope( msg )) != S_OK) goto done;
- if ((hr = write_envelope_start( msg, writer )) != S_OK) goto done;
-
- msg->writer_body = writer;
- msg->state = WS_MESSAGE_STATE_WRITING;
-
-done:
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -781,15 +779,12 @@ HRESULT WINAPI WsWriteEnvelopeEnd( WS_MESSAGE *handle, WS_ERROR *error )
return E_INVALIDARG;
}
- if (msg->state != WS_MESSAGE_STATE_WRITING)
- {
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if ((hr = write_envelope_end( msg->writer_body )) == S_OK) msg->state = WS_MESSAGE_STATE_DONE;
+ if (msg->state != WS_MESSAGE_STATE_WRITING) hr = WS_E_INVALID_OPERATION;
+ else if ((hr = write_envelope_end( msg->writer_body )) == S_OK)
+ msg->state = WS_MESSAGE_STATE_DONE;
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -817,8 +812,8 @@ HRESULT WINAPI WsWriteBody( WS_MESSAGE *handle, const WS_ELEMENT_DESCRIPTION *de
if (msg->state != WS_MESSAGE_STATE_WRITING)
{
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
+ hr = WS_E_INVALID_OPERATION;
+ goto done;
}
if (desc->elementLocalName &&
@@ -832,6 +827,7 @@ HRESULT WINAPI WsWriteBody( WS_MESSAGE *handle, const WS_ELEMENT_DESCRIPTION *de
done:
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -917,20 +913,16 @@ HRESULT WINAPI WsReadEnvelopeStart( WS_MESSAGE *handle, WS_XML_READER *reader, W
return E_INVALIDARG;
}
- if (msg->state != WS_MESSAGE_STATE_EMPTY)
- {
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if ((hr = read_envelope_start( msg, reader )) == S_OK &&
- (hr = create_header_buffer( reader, msg->heap, &msg->buf )) == S_OK)
+ if (msg->state != WS_MESSAGE_STATE_EMPTY) hr = WS_E_INVALID_OPERATION;
+ else if ((hr = read_envelope_start( msg, reader )) == S_OK &&
+ (hr = create_header_buffer( reader, msg->heap, &msg->buf )) == S_OK)
{
msg->reader_body = reader;
msg->state = WS_MESSAGE_STATE_READING;
}
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -962,15 +954,12 @@ HRESULT WINAPI WsReadEnvelopeEnd( WS_MESSAGE *handle, WS_ERROR *error )
return E_INVALIDARG;
}
- if (msg->state != WS_MESSAGE_STATE_READING)
- {
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if ((hr = read_envelope_end( msg->reader_body )) == S_OK) msg->state = WS_MESSAGE_STATE_DONE;
+ if (msg->state != WS_MESSAGE_STATE_READING) hr = WS_E_INVALID_OPERATION;
+ else if ((hr = read_envelope_end( msg->reader_body )) == S_OK)
+ msg->state = WS_MESSAGE_STATE_DONE;
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -996,15 +985,11 @@ HRESULT WINAPI WsReadBody( WS_MESSAGE *handle, const WS_ELEMENT_DESCRIPTION *des
return E_INVALIDARG;
}
- if (msg->state != WS_MESSAGE_STATE_READING)
- {
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- hr = WsReadElement( msg->reader_body, desc, option, heap, value, size, NULL );
+ if (msg->state != WS_MESSAGE_STATE_READING) hr = WS_E_INVALID_OPERATION;
+ else hr = WsReadElement( msg->reader_body, desc, option, heap, value, size, NULL );
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1035,19 +1020,15 @@ HRESULT WINAPI WsInitializeMessage( WS_MESSAGE *handle, WS_MESSAGE_INITIALIZATIO
return E_INVALIDARG;
}
- if (msg->state >= WS_MESSAGE_STATE_INITIALIZED)
- {
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if ((hr = write_envelope( msg )) == S_OK)
+ if (msg->state >= WS_MESSAGE_STATE_INITIALIZED) hr = WS_E_INVALID_OPERATION;
+ else if ((hr = write_envelope( msg )) == S_OK)
{
msg->init = init;
msg->state = WS_MESSAGE_STATE_INITIALIZED;
}
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1164,8 +1145,8 @@ HRESULT WINAPI WsSetHeader( WS_MESSAGE *handle, WS_HEADER_TYPE type, WS_TYPE val
if (msg->state < WS_MESSAGE_STATE_INITIALIZED)
{
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
+ hr = WS_E_INVALID_OPERATION;
+ goto done;
}
for (i = 0; i < msg->header_count; i++)
@@ -1194,6 +1175,7 @@ HRESULT WINAPI WsSetHeader( WS_MESSAGE *handle, WS_HEADER_TYPE type, WS_TYPE val
done:
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1256,15 +1238,11 @@ HRESULT WINAPI WsGetHeader( WS_MESSAGE *handle, WS_HEADER_TYPE type, WS_TYPE val
return E_INVALIDARG;
}
- if (msg->state < WS_MESSAGE_STATE_INITIALIZED)
- {
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- hr = get_standard_header( msg, type, value_type, option, heap, value, size );
+ if (msg->state < WS_MESSAGE_STATE_INITIALIZED) hr = WS_E_INVALID_OPERATION;
+ else hr = get_standard_header( msg, type, value_type, option, heap, value, size );
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1298,31 +1276,24 @@ HRESULT WINAPI WsRemoveHeader( WS_MESSAGE *handle, WS_HEADER_TYPE type, WS_ERROR
return E_INVALIDARG;
}
- if (msg->state < WS_MESSAGE_STATE_INITIALIZED)
- {
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if (type < WS_ACTION_HEADER || type > WS_FAULT_TO_HEADER)
- {
- LeaveCriticalSection( &msg->cs );
- return E_INVALIDARG;
- }
-
- for (i = 0; i < msg->header_count; i++)
+ if (msg->state < WS_MESSAGE_STATE_INITIALIZED) hr = WS_E_INVALID_OPERATION;
+ else if (type < WS_ACTION_HEADER || type > WS_FAULT_TO_HEADER) hr = E_INVALIDARG;
+ else
{
- if (msg->header[i]->type == type)
+ for (i = 0; i < msg->header_count; i++)
{
- remove_header( msg, i );
- removed = TRUE;
- break;
+ if (msg->header[i]->type == type)
+ {
+ remove_header( msg, i );
+ removed = TRUE;
+ break;
+ }
}
+ if (removed) hr = write_envelope( msg );
}
- if (removed) hr = write_envelope( msg );
-
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1440,8 +1411,8 @@ HRESULT WINAPI WsAddMappedHeader( WS_MESSAGE *handle, const WS_XML_STRING *name,
if (msg->state < WS_MESSAGE_STATE_INITIALIZED)
{
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
+ hr = WS_E_INVALID_OPERATION;
+ goto done;
}
for (i = 0; i < msg->header_count; i++)
@@ -1469,6 +1440,7 @@ HRESULT WINAPI WsAddMappedHeader( WS_MESSAGE *handle, const WS_XML_STRING *name,
done:
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1478,6 +1450,7 @@ done:
HRESULT WINAPI WsRemoveMappedHeader( WS_MESSAGE *handle, const WS_XML_STRING *name, WS_ERROR *error )
{
struct msg *msg = (struct msg *)handle;
+ HRESULT hr = S_OK;
ULONG i;
TRACE( "%p %s %p\n", handle, debugstr_xmlstr(name), error );
@@ -1493,24 +1466,23 @@ HRESULT WINAPI WsRemoveMappedHeader( WS_MESSAGE *handle, const WS_XML_STRING *na
return E_INVALIDARG;
}
- if (msg->state < WS_MESSAGE_STATE_INITIALIZED)
- {
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- for (i = 0; i < msg->header_count; i++)
+ if (msg->state < WS_MESSAGE_STATE_INITIALIZED) hr = WS_E_INVALID_OPERATION;
+ else
{
- if (msg->header[i]->type || !msg->header[i]->mapped) continue;
- if (WsXmlStringEquals( name, &msg->header[i]->name, NULL ) == S_OK)
+ for (i = 0; i < msg->header_count; i++)
{
- remove_header( msg, i );
- break;
+ if (msg->header[i]->type || !msg->header[i]->mapped) continue;
+ if (WsXmlStringEquals( name, &msg->header[i]->name, NULL ) == S_OK)
+ {
+ remove_header( msg, i );
+ break;
+ }
}
}
LeaveCriticalSection( &msg->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
static HRESULT write_custom_header( WS_XML_WRITER *writer, const WS_XML_STRING *name, const WS_XML_STRING *ns,
@@ -1572,8 +1544,8 @@ HRESULT WINAPI WsAddCustomHeader( WS_MESSAGE *handle, const WS_ELEMENT_DESCRIPTI
if (msg->state < WS_MESSAGE_STATE_INITIALIZED)
{
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
+ hr = WS_E_INVALID_OPERATION;
+ goto done;
}
if ((hr = grow_header_array( msg, msg->header_count + 1 )) != S_OK) goto done;
@@ -1584,6 +1556,7 @@ HRESULT WINAPI WsAddCustomHeader( WS_MESSAGE *handle, const WS_ELEMENT_DESCRIPTI
done:
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1636,15 +1609,11 @@ HRESULT WINAPI WsGetCustomHeader( WS_MESSAGE *handle, const WS_ELEMENT_DESCRIPTI
return E_INVALIDARG;
}
- if (msg->state < WS_MESSAGE_STATE_INITIALIZED)
- {
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- hr = get_custom_header( msg, desc, option, heap, value, size );
+ if (msg->state < WS_MESSAGE_STATE_INITIALIZED) hr = WS_E_INVALID_OPERATION;
+ else hr = get_custom_header( msg, desc, option, heap, value, size );
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1672,27 +1641,25 @@ HRESULT WINAPI WsRemoveCustomHeader( WS_MESSAGE *handle, const WS_XML_STRING *na
return E_INVALIDARG;
}
- if (msg->state < WS_MESSAGE_STATE_INITIALIZED)
- {
- LeaveCriticalSection( &msg->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- for (i = 0; i < msg->header_count; i++)
+ if (msg->state < WS_MESSAGE_STATE_INITIALIZED) hr = WS_E_INVALID_OPERATION;
+ else
{
- if (msg->header[i]->type || msg->header[i]->mapped) continue;
- if (WsXmlStringEquals( name, &msg->header[i]->name, NULL ) == S_OK &&
- WsXmlStringEquals( ns, &msg->header[i]->ns, NULL ) == S_OK)
+ for (i = 0; i < msg->header_count; i++)
{
- remove_header( msg, i );
- removed = TRUE;
- i--;
+ if (msg->header[i]->type || msg->header[i]->mapped) continue;
+ if (WsXmlStringEquals( name, &msg->header[i]->name, NULL ) == S_OK &&
+ WsXmlStringEquals( ns, &msg->header[i]->ns, NULL ) == S_OK)
+ {
+ remove_header( msg, i );
+ removed = TRUE;
+ i--;
+ }
}
+ if (removed) hr = write_envelope( msg );
}
- if (removed) hr = write_envelope( msg );
-
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1817,6 +1784,7 @@ HRESULT message_insert_http_headers( WS_MESSAGE *handle, HINTERNET req )
done:
heap_free( header );
LeaveCriticalSection( &msg->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
diff --git a/dlls/webservices/proxy.c b/dlls/webservices/proxy.c
index 92406f15df..811aa8d9ae 100644
--- a/dlls/webservices/proxy.c
+++ b/dlls/webservices/proxy.c
@@ -219,6 +219,7 @@ HRESULT WINAPI WsCreateServiceProxyFromTemplate( WS_CHANNEL_TYPE channel_type,
HRESULT WINAPI WsResetServiceProxy( WS_SERVICE_PROXY *handle, WS_ERROR *error )
{
struct proxy *proxy = (struct proxy *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p\n", handle, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -234,15 +235,13 @@ HRESULT WINAPI WsResetServiceProxy( WS_SERVICE_PROXY *handle, WS_ERROR *error )
}
if (proxy->state != WS_SERVICE_PROXY_STATE_CREATED && proxy->state != WS_SERVICE_PROXY_STATE_CLOSED)
- {
- LeaveCriticalSection( &proxy->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- reset_proxy( proxy );
+ hr = WS_E_INVALID_OPERATION;
+ else
+ reset_proxy( proxy );
LeaveCriticalSection( &proxy->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
/**************************************************************************
@@ -304,6 +303,7 @@ HRESULT WINAPI WsGetServiceProxyProperty( WS_SERVICE_PROXY *handle, WS_PROXY_PRO
}
LeaveCriticalSection( &proxy->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -334,6 +334,7 @@ HRESULT WINAPI WsOpenServiceProxy( WS_SERVICE_PROXY *handle, const WS_ENDPOINT_A
proxy->state = WS_SERVICE_PROXY_STATE_OPEN;
LeaveCriticalSection( &proxy->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -363,6 +364,7 @@ HRESULT WINAPI WsCloseServiceProxy( WS_SERVICE_PROXY *handle, const WS_ASYNC_CON
proxy->state = WS_SERVICE_PROXY_STATE_CLOSED;
LeaveCriticalSection( &proxy->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -544,5 +546,6 @@ HRESULT WINAPI WsCall( WS_SERVICE_PROXY *handle, const WS_OPERATION_DESCRIPTION
done:
WsFreeMessage( msg );
LeaveCriticalSection( &proxy->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
diff --git a/dlls/webservices/reader.c b/dlls/webservices/reader.c
index 7288c4b966..a5ff59a417 100644
--- a/dlls/webservices/reader.c
+++ b/dlls/webservices/reader.c
@@ -622,6 +622,7 @@ HRESULT WINAPI WsFillReader( WS_XML_READER *handle, ULONG min_size, const WS_ASY
WS_ERROR *error )
{
struct reader *reader = (struct reader *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %u %p %p\n", handle, min_size, ctx, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -641,7 +642,8 @@ HRESULT WINAPI WsFillReader( WS_XML_READER *handle, ULONG min_size, const WS_ASY
reader->read_pos = 0;
LeaveCriticalSection( &reader->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
/**************************************************************************
@@ -657,6 +659,7 @@ HRESULT WINAPI WsGetNamespaceFromPrefix( WS_XML_READER *handle, const WS_XML_STR
static const WS_XML_STRING xmlns_ns = {29, (BYTE *)"http://www.w3.org/2000/xmlns/"};
struct reader *reader = (struct reader *)handle;
BOOL found = FALSE;
+ HRESULT hr = S_OK;
TRACE( "%p %s %d %p %p\n", handle, debugstr_xmlstr(prefix), required, ns, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -671,13 +674,8 @@ HRESULT WINAPI WsGetNamespaceFromPrefix( WS_XML_READER *handle, const WS_XML_STR
return E_INVALIDARG;
}
- if (reader->state != READER_STATE_STARTELEMENT)
- {
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if (!prefix->length)
+ if (reader->state != READER_STATE_STARTELEMENT) hr = WS_E_INVALID_OPERATION;
+ else if (!prefix->length)
{
*ns = &empty_ns;
found = TRUE;
@@ -711,14 +709,18 @@ HRESULT WINAPI WsGetNamespaceFromPrefix( WS_XML_READER *handle, const WS_XML_STR
LeaveCriticalSection( &reader->cs );
- if (!found)
+ if (hr == S_OK && !found)
{
- if (required) return WS_E_INVALID_FORMAT;
- *ns = NULL;
- return S_FALSE;
+ if (required) hr = WS_E_INVALID_FORMAT;
+ else
+ {
+ *ns = NULL;
+ hr = S_FALSE;
+ }
}
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
/**************************************************************************
@@ -728,6 +730,7 @@ HRESULT WINAPI WsGetReaderNode( WS_XML_READER *handle, const WS_XML_NODE **node,
WS_ERROR *error )
{
struct reader *reader = (struct reader *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p %p\n", handle, node, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -745,6 +748,7 @@ HRESULT WINAPI WsGetReaderNode( WS_XML_READER *handle, const WS_XML_NODE **node,
*node = &reader->current->hdr.node;
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return S_OK;
}
@@ -778,16 +782,12 @@ HRESULT WINAPI WsGetReaderProperty( WS_XML_READER *handle, WS_XML_READER_PROPERT
return E_INVALIDARG;
}
- if (!reader->input_type)
- {
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if (id == WS_XML_READER_PROPERTY_CHARSET) hr = get_charset( reader, buf, size );
+ if (!reader->input_type) hr = WS_E_INVALID_OPERATION;
+ else if (id == WS_XML_READER_PROPERTY_CHARSET) hr = get_charset( reader, buf, size );
else hr = prop_get( reader->prop, reader->prop_count, id, buf, size );
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -3098,6 +3098,7 @@ HRESULT WINAPI WsReadEndElement( WS_XML_READER *handle, WS_ERROR *error )
hr = read_endelement( reader );
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -3125,6 +3126,7 @@ HRESULT WINAPI WsReadNode( WS_XML_READER *handle, WS_ERROR *error )
hr = read_node( reader );
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -3171,6 +3173,7 @@ HRESULT WINAPI WsSkipNode( WS_XML_READER *handle, WS_ERROR *error )
hr = skip_node( reader );
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -3198,6 +3201,7 @@ HRESULT WINAPI WsReadStartElement( WS_XML_READER *handle, WS_ERROR *error )
hr = read_startelement( reader );
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -3227,6 +3231,7 @@ HRESULT WINAPI WsReadToStartElement( WS_XML_READER *handle, const WS_XML_STRING
hr = read_to_startelement( reader, found );
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -3523,15 +3528,11 @@ HRESULT WINAPI WsMoveReader( WS_XML_READER *handle, WS_MOVE_TO move, BOOL *found
return E_INVALIDARG;
}
- if (!reader->input_type)
- {
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- hr = read_move_to( reader, move, found );
+ if (!reader->input_type) hr = WS_E_INVALID_OPERATION;
+ else hr = read_move_to( reader, move, found );
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -3542,6 +3543,7 @@ HRESULT WINAPI WsReadStartAttribute( WS_XML_READER *handle, ULONG index, WS_ERRO
{
struct reader *reader = (struct reader *)handle;
const WS_XML_ELEMENT_NODE *elem;
+ HRESULT hr = S_OK;
TRACE( "%p %u %p\n", handle, index, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -3557,16 +3559,15 @@ HRESULT WINAPI WsReadStartAttribute( WS_XML_READER *handle, ULONG index, WS_ERRO
}
elem = &reader->current->hdr;
- if (reader->state != READER_STATE_STARTELEMENT || index >= elem->attributeCount)
+ if (reader->state != READER_STATE_STARTELEMENT || index >= elem->attributeCount) hr = WS_E_INVALID_FORMAT;
+ else
{
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_FORMAT;
+ reader->current_attr = index;
+ reader->state = READER_STATE_STARTATTRIBUTE;
}
- reader->current_attr = index;
- reader->state = READER_STATE_STARTATTRIBUTE;
-
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return S_OK;
}
@@ -3576,6 +3577,7 @@ HRESULT WINAPI WsReadStartAttribute( WS_XML_READER *handle, ULONG index, WS_ERRO
HRESULT WINAPI WsReadEndAttribute( WS_XML_READER *handle, WS_ERROR *error )
{
struct reader *reader = (struct reader *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p\n", handle, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -3590,16 +3592,12 @@ HRESULT WINAPI WsReadEndAttribute( WS_XML_READER *handle, WS_ERROR *error )
return E_INVALIDARG;
}
- if (reader->state != READER_STATE_STARTATTRIBUTE)
- {
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_FORMAT;
- }
-
- reader->state = READER_STATE_STARTELEMENT;
+ if (reader->state != READER_STATE_STARTATTRIBUTE) hr = WS_E_INVALID_FORMAT;
+ else reader->state = READER_STATE_STARTELEMENT;
LeaveCriticalSection( &reader->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
static HRESULT str_to_bool( const unsigned char *str, ULONG len, BOOL *ret )
@@ -4061,27 +4059,13 @@ HRESULT WINAPI WsReadQualifiedName( WS_XML_READER *handle, WS_HEAP *heap, WS_XML
return E_INVALIDARG;
}
- if (!reader->input_type)
- {
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if (!localname)
- {
- LeaveCriticalSection( &reader->cs );
- return E_INVALIDARG;
- }
-
- if (reader->state != READER_STATE_TEXT)
- {
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_FORMAT;
- }
-
- hr = read_qualified_name( reader, heap, prefix, localname, ns );
+ if (!reader->input_type) hr = WS_E_INVALID_OPERATION;
+ else if (!localname) hr = E_INVALIDARG;
+ else if (reader->state != READER_STATE_TEXT) hr = WS_E_INVALID_FORMAT;
+ else hr = read_qualified_name( reader, heap, prefix, localname, ns );
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -4299,13 +4283,8 @@ HRESULT WINAPI WsFindAttribute( WS_XML_READER *handle, const WS_XML_STRING *loca
return E_INVALIDARG;
}
- if (node_type( reader->current ) != WS_XML_NODE_TYPE_ELEMENT)
- {
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if (!find_attribute( reader, localname, ns, index ))
+ if (node_type( reader->current ) != WS_XML_NODE_TYPE_ELEMENT) hr = WS_E_INVALID_OPERATION;
+ else if (!find_attribute( reader, localname, ns, index ))
{
if (required) hr = WS_E_INVALID_FORMAT;
else
@@ -4316,6 +4295,7 @@ HRESULT WINAPI WsFindAttribute( WS_XML_READER *handle, const WS_XML_STRING *loca
}
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -6701,25 +6681,22 @@ HRESULT WINAPI WsReadType( WS_XML_READER *handle, WS_TYPE_MAPPING mapping, WS_TY
return E_INVALIDARG;
}
- if ((hr = read_type( reader, mapping, type, NULL, NULL, desc, option, heap, value, size, &found )) != S_OK)
- {
- LeaveCriticalSection( &reader->cs );
- return hr;
- }
-
- switch (mapping)
+ if ((hr = read_type( reader, mapping, type, NULL, NULL, desc, option, heap, value, size, &found )) == S_OK)
{
- case WS_ELEMENT_TYPE_MAPPING:
- hr = read_node( reader );
- break;
+ switch (mapping)
+ {
+ case WS_ELEMENT_TYPE_MAPPING:
+ hr = read_node( reader );
+ break;
- default:
- break;
+ default:
+ break;
+ }
+ if (hr == S_OK && !read_end_of_data( reader )) hr = WS_E_INVALID_FORMAT;
}
- if (hr == S_OK && !read_end_of_data( reader )) hr = WS_E_INVALID_FORMAT;
-
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -6774,6 +6751,7 @@ HRESULT WINAPI WsReadElement( WS_XML_READER *handle, const WS_ELEMENT_DESCRIPTIO
desc->elementNs, desc->typeDescription, option, heap, value, size, &found );
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -6805,6 +6783,7 @@ HRESULT WINAPI WsReadValue( WS_XML_READER *handle, WS_VALUE_TYPE value_type, voi
NULL, value, size, &found );
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -6832,16 +6811,12 @@ HRESULT WINAPI WsReadAttribute( WS_XML_READER *handle, const WS_ATTRIBUTE_DESCRI
return E_INVALIDARG;
}
- if (!reader->input_type)
- {
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- hr = read_type( reader, WS_ATTRIBUTE_TYPE_MAPPING, desc->type, desc->attributeLocalName,
- desc->attributeNs, desc->typeDescription, option, heap, value, size, &found );
+ if (!reader->input_type) hr = WS_E_INVALID_OPERATION;
+ else hr = read_type( reader, WS_ATTRIBUTE_TYPE_MAPPING, desc->type, desc->attributeLocalName,
+ desc->attributeNs, desc->typeDescription, option, heap, value, size, &found );
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -6984,6 +6959,7 @@ HRESULT WINAPI WsSetInput( WS_XML_READER *handle, const WS_XML_READER_ENCODING *
done:
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -7033,6 +7009,7 @@ HRESULT WINAPI WsSetInputToBuffer( WS_XML_READER *handle, WS_XML_BUFFER *buffer,
done:
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -7042,6 +7019,7 @@ done:
HRESULT WINAPI WsGetReaderPosition( WS_XML_READER *handle, WS_XML_NODE_POSITION *pos, WS_ERROR *error )
{
struct reader *reader = (struct reader *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p %p\n", handle, pos, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -7056,17 +7034,16 @@ HRESULT WINAPI WsGetReaderPosition( WS_XML_READER *handle, WS_XML_NODE_POSITION
return E_INVALIDARG;
}
- if (!reader->input_buf)
+ if (!reader->input_buf) hr = WS_E_INVALID_OPERATION;
+ else
{
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_OPERATION;
+ pos->buffer = (WS_XML_BUFFER *)reader->input_buf;
+ pos->node = reader->current;
}
- pos->buffer = (WS_XML_BUFFER *)reader->input_buf;
- pos->node = reader->current;
-
LeaveCriticalSection( &reader->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
/**************************************************************************
@@ -7075,6 +7052,7 @@ HRESULT WINAPI WsGetReaderPosition( WS_XML_READER *handle, WS_XML_NODE_POSITION
HRESULT WINAPI WsSetReaderPosition( WS_XML_READER *handle, const WS_XML_NODE_POSITION *pos, WS_ERROR *error )
{
struct reader *reader = (struct reader *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p %p\n", handle, pos, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -7089,16 +7067,12 @@ HRESULT WINAPI WsSetReaderPosition( WS_XML_READER *handle, const WS_XML_NODE_POS
return E_INVALIDARG;
}
- if (!reader->input_buf)
- {
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- reader->current = pos->node;
+ if (!reader->input_buf) hr = WS_E_INVALID_OPERATION;
+ else reader->current = pos->node;
LeaveCriticalSection( &reader->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
static HRESULT utf8_to_base64( const WS_XML_UTF8_TEXT *utf8, WS_XML_BASE64_TEXT *base64 )
@@ -7115,7 +7089,7 @@ static HRESULT utf8_to_base64( const WS_XML_UTF8_TEXT *utf8, WS_XML_BASE64_TEXT
HRESULT WINAPI WsReadBytes( WS_XML_READER *handle, void *bytes, ULONG max_count, ULONG *count, WS_ERROR *error )
{
struct reader *reader = (struct reader *)handle;
- HRESULT hr;
+ HRESULT hr = S_OK;
TRACE( "%p %p %u %p %p\n", handle, bytes, max_count, count, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -7132,14 +7106,13 @@ HRESULT WINAPI WsReadBytes( WS_XML_READER *handle, void *bytes, ULONG max_count,
if (!reader->input_type)
{
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_OPERATION;
+ hr = WS_E_INVALID_OPERATION;
+ goto done;
}
-
if (!count)
{
- LeaveCriticalSection( &reader->cs );
- return E_INVALIDARG;
+ hr = E_INVALIDARG;
+ goto done;
}
*count = 0;
@@ -7148,17 +7121,12 @@ HRESULT WINAPI WsReadBytes( WS_XML_READER *handle, void *bytes, ULONG max_count,
const WS_XML_TEXT_NODE *text = (const WS_XML_TEXT_NODE *)reader->current;
WS_XML_BASE64_TEXT base64;
- if ((hr = utf8_to_base64( (const WS_XML_UTF8_TEXT *)text->text, &base64 )) != S_OK)
- {
- LeaveCriticalSection( &reader->cs );
- return hr;
- }
+ if ((hr = utf8_to_base64( (const WS_XML_UTF8_TEXT *)text->text, &base64 )) != S_OK) goto done;
if (reader->text_conv_offset == base64.length)
{
heap_free( base64.bytes );
hr = read_node( reader );
- LeaveCriticalSection( &reader->cs );
- return hr;
+ goto done;
}
*count = min( base64.length - reader->text_conv_offset, max_count );
memcpy( bytes, base64.bytes + reader->text_conv_offset, *count );
@@ -7166,8 +7134,10 @@ HRESULT WINAPI WsReadBytes( WS_XML_READER *handle, void *bytes, ULONG max_count,
heap_free( base64.bytes );
}
+done:
LeaveCriticalSection( &reader->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
static HRESULT utf8_to_utf16( const WS_XML_UTF8_TEXT *utf8, WS_XML_UTF16_TEXT *utf16 )
@@ -7185,6 +7155,7 @@ static HRESULT utf8_to_utf16( const WS_XML_UTF8_TEXT *utf8, WS_XML_UTF16_TEXT *u
HRESULT WINAPI WsReadChars( WS_XML_READER *handle, WCHAR *chars, ULONG max_count, ULONG *count, WS_ERROR *error )
{
struct reader *reader = (struct reader *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p %u %p %p\n", handle, chars, max_count, count, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -7201,14 +7172,13 @@ HRESULT WINAPI WsReadChars( WS_XML_READER *handle, WCHAR *chars, ULONG max_count
if (!reader->input_type)
{
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_OPERATION;
+ hr = WS_E_INVALID_OPERATION;
+ goto done;
}
-
if (!count)
{
- LeaveCriticalSection( &reader->cs );
- return E_INVALIDARG;
+ hr = E_INVALIDARG;
+ goto done;
}
*count = 0;
@@ -7218,17 +7188,12 @@ HRESULT WINAPI WsReadChars( WS_XML_READER *handle, WCHAR *chars, ULONG max_count
WS_XML_UTF16_TEXT utf16;
HRESULT hr;
- if ((hr = utf8_to_utf16( (const WS_XML_UTF8_TEXT *)text->text, &utf16 )) != S_OK)
- {
- LeaveCriticalSection( &reader->cs );
- return hr;
- }
+ if ((hr = utf8_to_utf16( (const WS_XML_UTF8_TEXT *)text->text, &utf16 )) != S_OK) goto done;
if (reader->text_conv_offset == utf16.byteCount / sizeof(WCHAR))
{
heap_free( utf16.bytes );
hr = read_node( reader );
- LeaveCriticalSection( &reader->cs );
- return hr;
+ goto done;
}
*count = min( utf16.byteCount / sizeof(WCHAR) - reader->text_conv_offset, max_count );
memcpy( chars, utf16.bytes + reader->text_conv_offset * sizeof(WCHAR), *count * sizeof(WCHAR) );
@@ -7236,8 +7201,10 @@ HRESULT WINAPI WsReadChars( WS_XML_READER *handle, WCHAR *chars, ULONG max_count
heap_free( utf16.bytes );
}
+done:
LeaveCriticalSection( &reader->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
/**************************************************************************
@@ -7246,7 +7213,7 @@ HRESULT WINAPI WsReadChars( WS_XML_READER *handle, WCHAR *chars, ULONG max_count
HRESULT WINAPI WsReadCharsUtf8( WS_XML_READER *handle, BYTE *bytes, ULONG max_count, ULONG *count, WS_ERROR *error )
{
struct reader *reader = (struct reader *)handle;
- HRESULT hr;
+ HRESULT hr = S_OK;
TRACE( "%p %p %u %p %p\n", handle, bytes, max_count, count, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -7263,14 +7230,13 @@ HRESULT WINAPI WsReadCharsUtf8( WS_XML_READER *handle, BYTE *bytes, ULONG max_co
if (!reader->input_type)
{
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_OPERATION;
+ hr = WS_E_INVALID_OPERATION;
+ goto done;
}
-
if (!count)
{
- LeaveCriticalSection( &reader->cs );
- return E_INVALIDARG;
+ hr = E_INVALIDARG;
+ goto done;
}
*count = 0;
@@ -7282,16 +7248,17 @@ HRESULT WINAPI WsReadCharsUtf8( WS_XML_READER *handle, BYTE *bytes, ULONG max_co
if (reader->text_conv_offset == utf8->value.length)
{
hr = read_node( reader );
- LeaveCriticalSection( &reader->cs );
- return hr;
+ goto done;
}
*count = min( utf8->value.length - reader->text_conv_offset, max_count );
memcpy( bytes, utf8->value.bytes + reader->text_conv_offset, *count );
reader->text_conv_offset += *count;
}
+done:
LeaveCriticalSection( &reader->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
static HRESULT move_to_element( struct reader *reader )
@@ -7328,7 +7295,7 @@ HRESULT WINAPI WsReadXmlBuffer( WS_XML_READER *handle, WS_HEAP *heap, WS_XML_BUF
{
struct reader *reader = (struct reader *)handle;
WS_XML_WRITER *writer = NULL;
- WS_XML_BUFFER *buffer;
+ WS_XML_BUFFER *buffer = NULL;
HRESULT hr;
TRACE( "%p %p %p %p\n", handle, heap, ret, error );
@@ -7345,21 +7312,20 @@ HRESULT WINAPI WsReadXmlBuffer( WS_XML_READER *handle, WS_HEAP *heap, WS_XML_BUF
return E_INVALIDARG;
}
- if (!reader->input_type)
+ if (!reader->input_type) hr = WS_E_INVALID_OPERATION;
+ else
{
- LeaveCriticalSection( &reader->cs );
- return WS_E_INVALID_OPERATION;
+ if ((hr = WsCreateWriter( NULL, 0, &writer, NULL )) != S_OK) goto done;
+ if ((hr = WsCreateXmlBuffer( heap, NULL, 0, &buffer, NULL )) != S_OK) goto done;
+ if ((hr = WsSetOutputToBuffer( writer, buffer, NULL, 0, NULL )) != S_OK) goto done;
+ if ((hr = copy_tree( reader, writer )) == S_OK) *ret = buffer;
}
- if ((hr = WsCreateWriter( NULL, 0, &writer, NULL )) != S_OK) goto done;
- if ((hr = WsCreateXmlBuffer( heap, NULL, 0, &buffer, NULL )) != S_OK) goto done;
- if ((hr = WsSetOutputToBuffer( writer, buffer, NULL, 0, NULL )) != S_OK) goto done;
- if ((hr = copy_tree( reader, writer )) == S_OK) *ret = buffer;
-
done:
if (hr != S_OK) free_xmlbuf( (struct xmlbuf *)buffer );
WsFreeWriter( writer );
LeaveCriticalSection( &reader->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
diff --git a/dlls/webservices/writer.c b/dlls/webservices/writer.c
index 7631f4ebe8..ff633a656c 100644
--- a/dlls/webservices/writer.c
+++ b/dlls/webservices/writer.c
@@ -294,43 +294,42 @@ HRESULT WINAPI WsGetWriterProperty( WS_XML_WRITER *handle, WS_XML_WRITER_PROPERT
return E_INVALIDARG;
}
- if (!writer->output_type)
- {
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- switch (id)
- {
- case WS_XML_WRITER_PROPERTY_BYTES:
+ if (!writer->output_type) hr = WS_E_INVALID_OPERATION;
+ else
{
- WS_BYTES *bytes = buf;
- if (size != sizeof(*bytes)) hr = E_INVALIDARG;
- else
+ switch (id)
{
- bytes->bytes = writer->output_buf->bytes.bytes;
- bytes->length = writer->output_buf->bytes.length;
- }
- break;
- }
- case WS_XML_WRITER_PROPERTY_BUFFERS:
- if (writer->output_buf->bytes.length)
+ case WS_XML_WRITER_PROPERTY_BYTES:
{
- WS_BUFFERS *buffers = buf;
- if (size != sizeof(*buffers)) hr = E_INVALIDARG;
+ WS_BYTES *bytes = buf;
+ if (size != sizeof(*bytes)) hr = E_INVALIDARG;
else
{
- buffers->bufferCount = 1;
- buffers->buffers = &writer->output_buf->bytes;
+ bytes->bytes = writer->output_buf->bytes.bytes;
+ bytes->length = writer->output_buf->bytes.length;
}
break;
}
- /* fall through */
- default:
- hr = prop_get( writer->prop, writer->prop_count, id, buf, size );
+ 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 );
+ }
}
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -438,6 +437,7 @@ HRESULT WINAPI WsSetOutput( WS_XML_WRITER *handle, const WS_XML_WRITER_ENCODING
done:
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -485,6 +485,7 @@ HRESULT WINAPI WsSetOutputToBuffer( WS_XML_WRITER *handle, WS_XML_BUFFER *buffer
done:
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1476,6 +1477,7 @@ HRESULT WINAPI WsGetPrefixFromNamespace( WS_XML_WRITER *handle, const WS_XML_STR
}
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1654,6 +1656,7 @@ static HRESULT set_namespaces( struct writer *writer )
HRESULT WINAPI WsWriteEndAttribute( WS_XML_WRITER *handle, WS_ERROR *error )
{
struct writer *writer = (struct writer *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p\n", handle, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -1671,7 +1674,8 @@ HRESULT WINAPI WsWriteEndAttribute( WS_XML_WRITER *handle, WS_ERROR *error )
writer->state = WRITER_STATE_STARTELEMENT;
LeaveCriticalSection( &writer->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
static HRESULT write_attributes( struct writer *writer, const WS_XML_ELEMENT_NODE *elem )
@@ -1913,6 +1917,7 @@ HRESULT WINAPI WsWriteEndElement( WS_XML_WRITER *handle, WS_ERROR *error )
hr = write_endelement_node( writer );
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -1957,19 +1962,18 @@ HRESULT WINAPI WsWriteEndStartElement( WS_XML_WRITER *handle, WS_ERROR *error )
return E_INVALIDARG;
}
- if (writer->state != WRITER_STATE_STARTELEMENT)
+ if (writer->state != WRITER_STATE_STARTELEMENT) hr = WS_E_INVALID_OPERATION;
+ else
{
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
+ if ((hr = set_namespaces( writer )) != S_OK) goto done;
+ if ((hr = write_startelement( writer )) != S_OK) goto done;
+ if ((hr = write_endstartelement( writer )) != S_OK) goto done;
+ writer->state = WRITER_STATE_ENDSTARTELEMENT;
}
- if ((hr = set_namespaces( writer )) != S_OK) goto done;
- if ((hr = write_startelement( writer )) != S_OK) goto done;
- if ((hr = write_endstartelement( writer )) != S_OK) goto done;
- writer->state = WRITER_STATE_ENDSTARTELEMENT;
-
done:
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -2033,16 +2037,12 @@ HRESULT WINAPI WsWriteStartAttribute( WS_XML_WRITER *handle, const WS_XML_STRING
return E_INVALIDARG;
}
- if (writer->state != WRITER_STATE_STARTELEMENT)
- {
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if ((hr = write_add_attribute( writer, prefix, localname, ns, single )) == S_OK)
+ if (writer->state != WRITER_STATE_STARTELEMENT) hr = WS_E_INVALID_OPERATION;
+ else if ((hr = write_add_attribute( writer, prefix, localname, ns, single )) == S_OK)
writer->state = WRITER_STATE_STARTATTRIBUTE;
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -2121,6 +2121,7 @@ HRESULT WINAPI WsWriteStartCData( WS_XML_WRITER *handle, WS_ERROR *error )
hr = write_cdata_node( writer );
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -2162,15 +2163,11 @@ HRESULT WINAPI WsWriteEndCData( WS_XML_WRITER *handle, WS_ERROR *error )
return E_INVALIDARG;
}
- if (writer->state != WRITER_STATE_TEXT)
- {
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- hr = write_endcdata_node( writer );
+ if (writer->state != WRITER_STATE_TEXT) hr = WS_E_INVALID_OPERATION;
+ else hr = write_endcdata_node( writer );
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -2257,6 +2254,7 @@ HRESULT WINAPI WsWriteStartElement( WS_XML_WRITER *handle, const WS_XML_STRING *
hr = write_element_node( writer, prefix, localname, ns );
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -2892,6 +2890,7 @@ HRESULT WINAPI WsWriteText( WS_XML_WRITER *handle, const WS_XML_TEXT *text, WS_E
else hr = write_text_node( writer, text );
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -2917,20 +2916,19 @@ HRESULT WINAPI WsWriteBytes( WS_XML_WRITER *handle, const void *bytes, ULONG cou
return E_INVALIDARG;
}
- if (!writer->output_type)
+ if (!writer->output_type) hr = WS_E_INVALID_OPERATION;
+ else
{
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- base64.text.textType = WS_XML_TEXT_TYPE_BASE64;
- base64.bytes = (BYTE *)bytes;
- base64.length = count;
+ base64.text.textType = WS_XML_TEXT_TYPE_BASE64;
+ base64.bytes = (BYTE *)bytes;
+ base64.length = count;
- if (writer->state == WRITER_STATE_STARTATTRIBUTE) hr = write_set_attribute_value( writer, &base64.text );
- else hr = write_text_node( writer, &base64.text );
+ if (writer->state == WRITER_STATE_STARTATTRIBUTE) hr = write_set_attribute_value( writer, &base64.text );
+ else hr = write_text_node( writer, &base64.text );
+ }
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -2956,20 +2954,19 @@ HRESULT WINAPI WsWriteChars( WS_XML_WRITER *handle, const WCHAR *chars, ULONG co
return E_INVALIDARG;
}
- if (!writer->output_type)
+ if (!writer->output_type) hr = WS_E_INVALID_OPERATION;
+ else
{
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- utf16.text.textType = WS_XML_TEXT_TYPE_UTF16;
- utf16.bytes = (BYTE *)chars;
- utf16.byteCount = count * sizeof(WCHAR);
+ utf16.text.textType = WS_XML_TEXT_TYPE_UTF16;
+ utf16.bytes = (BYTE *)chars;
+ utf16.byteCount = count * sizeof(WCHAR);
- if (writer->state == WRITER_STATE_STARTATTRIBUTE) hr = write_set_attribute_value( writer, &utf16.text );
- else hr = write_text_node( writer, &utf16.text );
+ if (writer->state == WRITER_STATE_STARTATTRIBUTE) hr = write_set_attribute_value( writer, &utf16.text );
+ else hr = write_text_node( writer, &utf16.text );
+ }
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -2995,20 +2992,19 @@ HRESULT WINAPI WsWriteCharsUtf8( WS_XML_WRITER *handle, const BYTE *bytes, ULONG
return E_INVALIDARG;
}
- if (!writer->output_type)
+ if (!writer->output_type) hr = WS_E_INVALID_OPERATION;
+ else
{
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- utf8.text.textType = WS_XML_TEXT_TYPE_UTF8;
- utf8.value.bytes = (BYTE *)bytes;
- utf8.value.length = count;
+ utf8.text.textType = WS_XML_TEXT_TYPE_UTF8;
+ utf8.value.bytes = (BYTE *)bytes;
+ utf8.value.length = count;
- if (writer->state == WRITER_STATE_STARTATTRIBUTE) hr = write_set_attribute_value( writer, &utf8.text );
- else hr = write_text_node( writer, &utf8.text );
+ if (writer->state == WRITER_STATE_STARTATTRIBUTE) hr = write_set_attribute_value( writer, &utf8.text );
+ else hr = write_text_node( writer, &utf8.text );
+ }
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -3892,22 +3888,15 @@ HRESULT WINAPI WsWriteAttribute( WS_XML_WRITER *handle, const WS_ATTRIBUTE_DESCR
return E_INVALIDARG;
}
- if (writer->state != WRITER_STATE_STARTELEMENT)
+ if (writer->state != WRITER_STATE_STARTELEMENT) hr = WS_E_INVALID_OPERATION;
+ else if ((hr = write_add_attribute( writer, NULL, desc->attributeLocalName, desc->attributeNs, FALSE )) == S_OK)
{
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if ((hr = write_add_attribute( writer, NULL, desc->attributeLocalName, desc->attributeNs, FALSE )) != S_OK)
- {
- LeaveCriticalSection( &writer->cs );
- return hr;
+ writer->state = WRITER_STATE_STARTATTRIBUTE;
+ hr = write_type( writer, WS_ATTRIBUTE_TYPE_MAPPING, desc->type, desc->typeDescription, option, value, size );
}
- writer->state = WRITER_STATE_STARTATTRIBUTE;
-
- hr = write_type( writer, WS_ATTRIBUTE_TYPE_MAPPING, desc->type, desc->typeDescription, option, value, size );
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -3944,6 +3933,7 @@ HRESULT WINAPI WsWriteElement( WS_XML_WRITER *handle, const WS_ELEMENT_DESCRIPTI
done:
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -3990,6 +3980,7 @@ HRESULT WINAPI WsWriteType( WS_XML_WRITER *handle, WS_TYPE_MAPPING mapping, WS_T
}
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -4059,6 +4050,7 @@ HRESULT WINAPI WsWriteValue( WS_XML_WRITER *handle, WS_VALUE_TYPE value_type, co
if (hr == S_OK) hr = write_type( writer, mapping, type, NULL, WS_WRITE_REQUIRED_VALUE, value, size );
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -4090,21 +4082,21 @@ HRESULT WINAPI WsWriteArray( WS_XML_WRITER *handle, const WS_XML_STRING *localna
if (!writer->output_type)
{
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
+ hr = WS_E_INVALID_OPERATION;
+ goto done;
}
if (!localname || !ns || (type = map_value_type( value_type )) == ~0u)
{
- LeaveCriticalSection( &writer->cs );
- return E_INVALIDARG;
+ hr = E_INVALIDARG;
+ goto done;
}
type_size = get_type_size( type, NULL );
if (size % type_size || (offset + count) * type_size > size || (count && !array))
{
- LeaveCriticalSection( &writer->cs );
- return E_INVALIDARG;
+ hr = E_INVALIDARG;
+ goto done;
}
for (i = offset; i < count; i++)
@@ -4118,6 +4110,7 @@ HRESULT WINAPI WsWriteArray( WS_XML_WRITER *handle, const WS_XML_STRING *localna
done:
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -4156,6 +4149,7 @@ HRESULT WINAPI WsWriteXmlBuffer( WS_XML_WRITER *handle, WS_XML_BUFFER *buffer, W
done:
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -4210,6 +4204,7 @@ HRESULT WINAPI WsWriteXmlBufferToBytes( WS_XML_WRITER *handle, WS_XML_BUFFER *bu
done:
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -4236,16 +4231,12 @@ HRESULT WINAPI WsWriteXmlnsAttribute( WS_XML_WRITER *handle, const WS_XML_STRING
return E_INVALIDARG;
}
- if (writer->state != WRITER_STATE_STARTELEMENT)
- {
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if (!namespace_in_scope( &writer->current->hdr, prefix, ns ))
+ if (writer->state != WRITER_STATE_STARTELEMENT) hr = WS_E_INVALID_OPERATION;
+ else if (!namespace_in_scope( &writer->current->hdr, prefix, ns ))
hr = add_namespace_attribute( writer, prefix, ns, single );
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -4290,27 +4281,13 @@ HRESULT WINAPI WsWriteQualifiedName( WS_XML_WRITER *handle, const WS_XML_STRING
return E_INVALIDARG;
}
- if (!writer->output_type)
- {
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- if (writer->state != WRITER_STATE_STARTELEMENT)
- {
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_FORMAT;
- }
-
- if (!localname || (!prefix && !ns))
- {
- LeaveCriticalSection( &writer->cs );
- return E_INVALIDARG;
- }
-
- hr = write_qualified_name( writer, prefix, localname, ns );
+ if (!writer->output_type) hr = WS_E_INVALID_OPERATION;
+ else if (writer->state != WRITER_STATE_STARTELEMENT) hr = WS_E_INVALID_FORMAT;
+ else if (!localname || (!prefix && !ns)) hr = E_INVALIDARG;
+ else hr = write_qualified_name( writer, prefix, localname, ns );
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -4406,15 +4383,11 @@ HRESULT WINAPI WsMoveWriter( WS_XML_WRITER *handle, WS_MOVE_TO move, BOOL *found
return E_INVALIDARG;
}
- if (!writer->output_type)
- {
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- hr = write_move_to( writer, move, found );
+ if (!writer->output_type) hr = WS_E_INVALID_OPERATION;
+ else hr = write_move_to( writer, move, found );
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -4424,6 +4397,7 @@ HRESULT WINAPI WsMoveWriter( WS_XML_WRITER *handle, WS_MOVE_TO move, BOOL *found
HRESULT WINAPI WsGetWriterPosition( WS_XML_WRITER *handle, WS_XML_NODE_POSITION *pos, WS_ERROR *error )
{
struct writer *writer = (struct writer *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p %p\n", handle, pos, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -4438,17 +4412,16 @@ HRESULT WINAPI WsGetWriterPosition( WS_XML_WRITER *handle, WS_XML_NODE_POSITION
return E_INVALIDARG;
}
- if (!writer->output_type)
+ if (!writer->output_type) hr = WS_E_INVALID_OPERATION;
+ else
{
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
+ pos->buffer = (WS_XML_BUFFER *)writer->output_buf;
+ pos->node = writer->current;
}
- pos->buffer = (WS_XML_BUFFER *)writer->output_buf;
- pos->node = writer->current;
-
LeaveCriticalSection( &writer->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
/**************************************************************************
@@ -4457,6 +4430,7 @@ HRESULT WINAPI WsGetWriterPosition( WS_XML_WRITER *handle, WS_XML_NODE_POSITION
HRESULT WINAPI WsSetWriterPosition( WS_XML_WRITER *handle, const WS_XML_NODE_POSITION *pos, WS_ERROR *error )
{
struct writer *writer = (struct writer *)handle;
+ HRESULT hr = S_OK;
TRACE( "%p %p %p\n", handle, pos, error );
if (error) FIXME( "ignoring error parameter\n" );
@@ -4471,16 +4445,12 @@ HRESULT WINAPI WsSetWriterPosition( WS_XML_WRITER *handle, const WS_XML_NODE_POS
return E_INVALIDARG;
}
- if (!writer->output_type)
- {
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- writer->current = pos->node;
+ if (!writer->output_type) hr = WS_E_INVALID_OPERATION;
+ else writer->current = pos->node;
LeaveCriticalSection( &writer->cs );
- return S_OK;
+ TRACE( "returning %08x\n", hr );
+ return hr;
}
static HRESULT write_add_comment_node( struct writer *writer, const WS_XML_STRING *value )
@@ -4635,15 +4605,11 @@ HRESULT WINAPI WsWriteNode( WS_XML_WRITER *handle, const WS_XML_NODE *node, WS_E
return E_INVALIDARG;
}
- if (!writer->output_type)
- {
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_OPERATION;
- }
-
- hr = write_node( writer, node );
+ if (!writer->output_type) hr = WS_E_INVALID_OPERATION;
+ else hr = write_node( writer, node );
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
@@ -4758,24 +4724,23 @@ HRESULT WINAPI WsCopyNode( WS_XML_WRITER *handle, WS_XML_READER *reader, WS_ERRO
return E_INVALIDARG;
}
- if (!(parent = find_parent( writer )))
+ if (!(parent = find_parent( writer ))) hr = WS_E_INVALID_FORMAT;
+ else
{
- LeaveCriticalSection( &writer->cs );
- return WS_E_INVALID_FORMAT;
- }
+ if ((hr = copy_node( reader, writer->output_enc, &node )) != S_OK) goto done;
+ current = writer->current;
+ write_insert_node( writer, parent, node );
- if ((hr = copy_node( reader, writer->output_enc, &node )) != S_OK) goto done;
- current = writer->current;
- write_insert_node( writer, parent, node );
-
- write_rewind( writer );
- if ((hr = write_tree( writer )) != S_OK) goto done;
- writer->current = current;
+ write_rewind( writer );
+ if ((hr = write_tree( writer )) != S_OK) goto done;
+ writer->current = current;
- WsMoveReader( reader, WS_MOVE_TO_NEXT_NODE, NULL, NULL );
+ WsMoveReader( reader, WS_MOVE_TO_NEXT_NODE, NULL, NULL );
+ }
done:
LeaveCriticalSection( &writer->cs );
+ TRACE( "returning %08x\n", hr );
return hr;
}
--
2.11.0
1
0
[PATCH 2/4] webservices: Don't set the critical section name in the Windows build.
by Hans Leidekker 17 Oct '18
by Hans Leidekker 17 Oct '18
17 Oct '18
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/webservices/channel.c | 16 ++++++++--------
dlls/webservices/error.c | 4 ++++
dlls/webservices/heap.c | 4 ++++
dlls/webservices/listener.c | 4 ++++
dlls/webservices/msg.c | 4 ++++
dlls/webservices/proxy.c | 4 ++++
dlls/webservices/reader.c | 5 +++++
dlls/webservices/writer.c | 4 ++++
8 files changed, 37 insertions(+), 8 deletions(-)
diff --git a/dlls/webservices/channel.c b/dlls/webservices/channel.c
index 0cd8b910e8..5d3ca347da 100644
--- a/dlls/webservices/channel.c
+++ b/dlls/webservices/channel.c
@@ -251,13 +251,13 @@ static struct channel *alloc_channel(void)
ret->magic = CHANNEL_MAGIC;
InitializeCriticalSection( &ret->cs );
- ret->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": channel.cs");
-
InitializeCriticalSection( &ret->send_q.cs );
- ret->send_q.cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": channel.send_q.cs");
-
InitializeCriticalSection( &ret->recv_q.cs );
+#ifndef __MINGW32__
+ ret->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": channel.cs");
+ ret->send_q.cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": channel.send_q.cs");
ret->recv_q.cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": channel.recv_q.cs");
+#endif
prop_init( channel_props, count, ret->prop, &ret[1] );
ret->prop_count = count;
@@ -342,13 +342,13 @@ static void free_channel( struct channel *channel )
heap_free( channel->read_buf );
+#ifndef __MINGW32__
channel->send_q.cs.DebugInfo->Spare[0] = 0;
- DeleteCriticalSection( &channel->send_q.cs );
-
channel->recv_q.cs.DebugInfo->Spare[0] = 0;
- DeleteCriticalSection( &channel->recv_q.cs );
-
channel->cs.DebugInfo->Spare[0] = 0;
+#endif
+ DeleteCriticalSection( &channel->send_q.cs );
+ DeleteCriticalSection( &channel->recv_q.cs );
DeleteCriticalSection( &channel->cs );
heap_free( channel );
}
diff --git a/dlls/webservices/error.c b/dlls/webservices/error.c
index 780040e51e..970c12e1e3 100644
--- a/dlls/webservices/error.c
+++ b/dlls/webservices/error.c
@@ -57,7 +57,9 @@ static struct error *alloc_error(void)
ret->magic = ERROR_MAGIC;
InitializeCriticalSection( &ret->cs );
+#ifndef __MINGW32__
ret->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": error.cs");
+#endif
prop_init( error_props, count, ret->prop, &ret[1] );
ret->prop_count = count;
@@ -66,7 +68,9 @@ static struct error *alloc_error(void)
static void free_error( struct error *error )
{
+#ifndef __MINGW32__
error->cs.DebugInfo->Spare[0] = 0;
+#endif
DeleteCriticalSection( &error->cs );
heap_free( error );
}
diff --git a/dlls/webservices/heap.c b/dlls/webservices/heap.c
index 93e647abc6..93c8c4499a 100644
--- a/dlls/webservices/heap.c
+++ b/dlls/webservices/heap.c
@@ -185,7 +185,9 @@ static struct heap *alloc_heap(void)
ret->magic = HEAP_MAGIC;
InitializeCriticalSection( &ret->cs );
+#ifndef __MINGW32__
ret->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": heap.cs");
+#endif
prop_init( heap_props, count, ret->prop, &ret[1] );
ret->prop_count = count;
@@ -245,7 +247,9 @@ void WINAPI WsFreeHeap( WS_HEAP *handle )
LeaveCriticalSection( &heap->cs );
+#ifndef __MINGW32__
heap->cs.DebugInfo->Spare[0] = 0;
+#endif
DeleteCriticalSection( &heap->cs );
heap_free( heap );
}
diff --git a/dlls/webservices/listener.c b/dlls/webservices/listener.c
index 0189059aa7..2e8286e144 100644
--- a/dlls/webservices/listener.c
+++ b/dlls/webservices/listener.c
@@ -139,7 +139,9 @@ static struct listener *alloc_listener(void)
return NULL;
}
InitializeCriticalSection( &ret->cs );
+#ifndef __MINGW32__
ret->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": listener.cs");
+#endif
prop_init( listener_props, count, ret->prop, &ret[1] );
ret->prop_count = count;
@@ -175,7 +177,9 @@ static void free_listener( struct listener *listener )
CloseHandle( listener->wait );
CloseHandle( listener->cancel );
+#ifndef __MINGW32__
listener->cs.DebugInfo->Spare[0] = 0;
+#endif
DeleteCriticalSection( &listener->cs );
heap_free( listener );
}
diff --git a/dlls/webservices/msg.c b/dlls/webservices/msg.c
index 07063460be..48b4ec561d 100644
--- a/dlls/webservices/msg.c
+++ b/dlls/webservices/msg.c
@@ -106,7 +106,9 @@ static struct msg *alloc_msg(void)
ret->header_size = HEADER_ARRAY_SIZE;
InitializeCriticalSection( &ret->cs );
+#ifndef __MINGW32__
ret->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": msg.cs");
+#endif
prop_init( msg_props, count, ret->prop, &ret[1] );
ret->prop_count = count;
@@ -162,7 +164,9 @@ static void free_msg( struct msg *msg )
WsFreeHeap( msg->heap );
heap_free( msg->header );
+#ifndef __MINGW32__
msg->cs.DebugInfo->Spare[0] = 0;
+#endif
DeleteCriticalSection( &msg->cs );
heap_free( msg );
}
diff --git a/dlls/webservices/proxy.c b/dlls/webservices/proxy.c
index 5122892704..92406f15df 100644
--- a/dlls/webservices/proxy.c
+++ b/dlls/webservices/proxy.c
@@ -63,7 +63,9 @@ static struct proxy *alloc_proxy(void)
ret->magic = PROXY_MAGIC;
InitializeCriticalSection( &ret->cs );
+#ifndef __MINGW32__
ret->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": proxy.cs");
+#endif
prop_init( proxy_props, count, ret->prop, &ret[1] );
ret->prop_count = count;
@@ -81,7 +83,9 @@ static void free_proxy( struct proxy *proxy )
reset_proxy( proxy );
WsFreeChannel( proxy->channel );
+#ifndef __MINGW32__
proxy->cs.DebugInfo->Spare[0] = 0;
+#endif
DeleteCriticalSection( &proxy->cs );
heap_free( proxy );
}
diff --git a/dlls/webservices/reader.c b/dlls/webservices/reader.c
index 296043fa25..7288c4b966 100644
--- a/dlls/webservices/reader.c
+++ b/dlls/webservices/reader.c
@@ -418,7 +418,9 @@ static struct reader *alloc_reader(void)
ret->magic = READER_MAGIC;
InitializeCriticalSection( &ret->cs );
+#ifndef __MINGW32__
ret->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": reader.cs");
+#endif
prop_init( reader_props, count, ret->prop, &ret[1] );
ret->prop_count = count;
@@ -513,7 +515,10 @@ static void free_reader( struct reader *reader )
destroy_nodes( reader->root );
clear_prefixes( reader->prefixes, reader->nb_prefixes );
heap_free( reader->prefixes );
+
+#ifndef __MINGW32__
reader->cs.DebugInfo->Spare[0] = 0;
+#endif
DeleteCriticalSection( &reader->cs );
heap_free( reader );
}
diff --git a/dlls/webservices/writer.c b/dlls/webservices/writer.c
index ef8f9193a0..7631f4ebe8 100644
--- a/dlls/webservices/writer.c
+++ b/dlls/webservices/writer.c
@@ -107,7 +107,9 @@ static struct writer *alloc_writer(void)
ret->magic = WRITER_MAGIC;
InitializeCriticalSection( &ret->cs );
+#ifndef __MINGW32__
ret->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": writer.cs");
+#endif
prop_init( writer_props, count, ret->prop, &ret[1] );
ret->prop_count = count;
@@ -120,7 +122,9 @@ static void free_writer( struct writer *writer )
free_xml_string( writer->current_ns );
WsFreeHeap( writer->output_heap );
+#ifndef __MINGW32__
writer->cs.DebugInfo->Spare[0] = 0;
+#endif
DeleteCriticalSection( &writer->cs );
heap_free( writer );
}
--
2.11.0
1
0
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/webservices/Makefile.in | 2 ++
dlls/webservices/rsrc.rc | 29 +++++++++++++++++++++++++++++
2 files changed, 31 insertions(+)
create mode 100644 dlls/webservices/rsrc.rc
diff --git a/dlls/webservices/Makefile.in b/dlls/webservices/Makefile.in
index 58dac38b74..b58714d325 100644
--- a/dlls/webservices/Makefile.in
+++ b/dlls/webservices/Makefile.in
@@ -13,3 +13,5 @@ C_SRCS = \
string.c \
url.c \
writer.c
+
+RC_SRCS = rsrc.rc
diff --git a/dlls/webservices/rsrc.rc b/dlls/webservices/rsrc.rc
new file mode 100644
index 0000000000..ef8d5c0950
--- /dev/null
+++ b/dlls/webservices/rsrc.rc
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2018 Hans Leidekker for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define WINE_FILEDESCRIPTION_STR "Wine Web Services"
+#define WINE_FILENAME_STR "webservices.dll"
+#define WINE_FILEVERSION_MAJOR 10
+#define WINE_FILEVERSION_MINOR 0
+#define WINE_FILEVERSION_BUILD 14393
+#define WINE_FILEVERSION_PLATFORMID 0
+
+#define WINE_PRODUCTVERSION 10,0,14993,0
+#define WINE_PRODUCTVERSION_STR "10.0.14993.0"
+
+#include "wine/wine_common_ver.rc"
--
2.11.0
1
0
Wine currently creates a MachineGuid (of different values) for:
a) the 64bit branch of registry; and
b) the Wow6432 branch
Windows doesn't create a MachineGuid for Wow6432.
This patch brings wine inline with Windows by ensuring a MachineGuid is
not created for Wow6432.
It should be noted that this could create an issue for 32bit Mono applications
that are currently being ran with 'wine' as a work-around for issues
within 'wine64'. The workaround to this would be to manually add a Wow6432
MachineGuid.
Signed-off-by: Brendan McGrath <brendan(a)redmandi.com>
---
dlls/advapi32/crypt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/advapi32/crypt.c b/dlls/advapi32/crypt.c
index 01d58804235..ab1e5982da3 100644
--- a/dlls/advapi32/crypt.c
+++ b/dlls/advapi32/crypt.c
@@ -281,7 +281,7 @@ static void CRYPT_CreateMachineGuid(void)
LONG r;
HKEY key;
- r = RegOpenKeyExW(HKEY_LOCAL_MACHINE, cryptographyW, 0, KEY_ALL_ACCESS,
+ r = RegOpenKeyExW(HKEY_LOCAL_MACHINE, cryptographyW, 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY,
&key);
if (!r)
{
--
2.17.1
1
0
Add Hebrew characters to Tahoma Bold font (fonts/tahomabd.sdf and
fonts/tahomabd.ttf).
Signed-off-by: Hirofumi Katayama <katayama.hirofumi.mz(a)gmail.com>
---
https://jira.reactos.org/browse/CORE-14880
2
3
Currently, when running the following two commands in a new prefix:
wine reg query 'HKLM\Software\Microsoft\Cryptography' /v MachineGuid
wine64 reg query 'HKLM\Software\Microsoft\Cryptography' /v MachineGuid
Two different values are returned. This can cause an issue when, for
example, a 32-bit Launcher and 64-bit application expect the same value.
This patch ensures that when the 64-bit GUID is created, the 32-bit
GUID is created as well (with the same value).
Signed-off-by: Brendan McGrath <brendan(a)redmandi.com>
---
I considered a few options on how to achieve this; but ended up with
this option as it seemed the simplest. However, it does leave the
possiblity for an application or user to change one and leave the other.
I did note that Windows doesn't appear to have a MachineGuid entry for
WoW, so it looks like Windows just uses the one entry. But I wasn't
sure of the best way to achieve that in Wine (and couldn't find a
precedent).
dlls/advapi32/crypt.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/dlls/advapi32/crypt.c b/dlls/advapi32/crypt.c
index 01d58804235..0ea64b52226 100644
--- a/dlls/advapi32/crypt.c
+++ b/dlls/advapi32/crypt.c
@@ -313,6 +313,14 @@ static void CRYPT_CreateMachineGuid(void)
RegSetValueExW(key, machineGuidW, 0, REG_SZ,
(const BYTE *)buf,
(lstrlenW(buf)+1)*sizeof(WCHAR));
+ r = RegOpenKeyExW(HKEY_LOCAL_MACHINE, cryptographyW, 0,
+ KEY_ALL_ACCESS | KEY_WOW64_32KEY, &key);
+ if (!r)
+ {
+ RegSetValueExW(key, machineGuidW, 0, REG_SZ,
+ (const BYTE *)buf,
+ (lstrlenW(buf)+1)*sizeof(WCHAR));
+ }
}
}
RegCloseKey(key);
--
2.17.1
3
9