forked from Mirrors/wine-wine
webservices: Added WsResetError().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Hans Leidekker <hans@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>oldstable
parent
73d9e2ebff
commit
5310f9690f
|
@ -142,6 +142,23 @@ void WINAPI WsFreeError( WS_ERROR *handle )
|
||||||
heap_free( error );
|
heap_free( error );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* WsResetError [webservices.@]
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI WsResetError( WS_ERROR *handle )
|
||||||
|
{
|
||||||
|
struct error *error = (struct error *)handle;
|
||||||
|
ULONG code;
|
||||||
|
|
||||||
|
TRACE( "%p\n", handle );
|
||||||
|
|
||||||
|
if (!handle) return E_INVALIDARG;
|
||||||
|
|
||||||
|
/* FIXME: release strings added with WsAddErrorString when it's implemented, reset string count */
|
||||||
|
code = 0;
|
||||||
|
return prop_set( error->prop, error->prop_count, WS_ERROR_PROPERTY_ORIGINAL_ERROR_CODE, &code, sizeof(code) );
|
||||||
|
}
|
||||||
|
|
||||||
static const struct prop_desc heap_props[] =
|
static const struct prop_desc heap_props[] =
|
||||||
{
|
{
|
||||||
{ sizeof(SIZE_T), FALSE }, /* WS_HEAP_PROPERTY_MAX_SIZE */
|
{ sizeof(SIZE_T), FALSE }, /* WS_HEAP_PROPERTY_MAX_SIZE */
|
||||||
|
|
|
@ -3359,6 +3359,63 @@ static void test_WsReadValue(void)
|
||||||
WsFreeReader( reader );
|
WsFreeReader( reader );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_WsResetError(void)
|
||||||
|
{
|
||||||
|
WS_ERROR_PROPERTY prop;
|
||||||
|
ULONG size, code;
|
||||||
|
WS_ERROR *error;
|
||||||
|
LANGID langid;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
hr = WsResetError( NULL );
|
||||||
|
ok( hr == E_INVALIDARG, "got %08x\n", hr );
|
||||||
|
|
||||||
|
error = NULL;
|
||||||
|
hr = WsCreateError( NULL, 0, &error );
|
||||||
|
ok( hr == S_OK, "got %08x\n", hr );
|
||||||
|
ok( error != NULL, "error not set\n" );
|
||||||
|
|
||||||
|
code = 0xdeadbeef;
|
||||||
|
size = sizeof(code);
|
||||||
|
hr = WsSetErrorProperty( error, WS_ERROR_PROPERTY_ORIGINAL_ERROR_CODE, &code, size );
|
||||||
|
ok( hr == S_OK, "got %08x\n", hr );
|
||||||
|
|
||||||
|
hr = WsResetError( error );
|
||||||
|
ok( hr == S_OK, "got %08x\n", hr );
|
||||||
|
|
||||||
|
code = 0xdeadbeef;
|
||||||
|
size = sizeof(code);
|
||||||
|
hr = WsGetErrorProperty( error, WS_ERROR_PROPERTY_ORIGINAL_ERROR_CODE, &code, size );
|
||||||
|
ok( hr == S_OK, "got %08x\n", hr );
|
||||||
|
ok( !code, "got %u\n", code );
|
||||||
|
|
||||||
|
WsFreeError( error );
|
||||||
|
|
||||||
|
langid = MAKELANGID( LANG_DUTCH, SUBLANG_DEFAULT );
|
||||||
|
prop.id = WS_ERROR_PROPERTY_LANGID;
|
||||||
|
prop.value = &langid;
|
||||||
|
prop.valueSize = sizeof(langid);
|
||||||
|
hr = WsCreateError( &prop, 1, &error );
|
||||||
|
ok( hr == S_OK, "got %08x\n", hr );
|
||||||
|
|
||||||
|
langid = 0xdead;
|
||||||
|
size = sizeof(langid);
|
||||||
|
hr = WsGetErrorProperty( error, WS_ERROR_PROPERTY_LANGID, &langid, size );
|
||||||
|
ok( hr == S_OK, "got %08x\n", hr );
|
||||||
|
ok( langid == MAKELANGID( LANG_DUTCH, SUBLANG_DEFAULT ), "got %u\n", langid );
|
||||||
|
|
||||||
|
hr = WsResetError( error );
|
||||||
|
ok( hr == S_OK, "got %08x\n", hr );
|
||||||
|
|
||||||
|
langid = 0xdead;
|
||||||
|
size = sizeof(langid);
|
||||||
|
hr = WsGetErrorProperty( error, WS_ERROR_PROPERTY_LANGID, &langid, size );
|
||||||
|
ok( hr == S_OK, "got %08x\n", hr );
|
||||||
|
ok( langid == MAKELANGID( LANG_DUTCH, SUBLANG_DEFAULT ), "got %u\n", langid );
|
||||||
|
|
||||||
|
WsFreeError( error );
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(reader)
|
START_TEST(reader)
|
||||||
{
|
{
|
||||||
test_WsCreateError();
|
test_WsCreateError();
|
||||||
|
@ -3390,4 +3447,5 @@ START_TEST(reader)
|
||||||
test_double();
|
test_double();
|
||||||
test_WsReadElement();
|
test_WsReadElement();
|
||||||
test_WsReadValue();
|
test_WsReadValue();
|
||||||
|
test_WsResetError();
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,7 +134,7 @@
|
||||||
@ stub WsRequestReply
|
@ stub WsRequestReply
|
||||||
@ stub WsRequestSecurityToken
|
@ stub WsRequestSecurityToken
|
||||||
@ stub WsResetChannel
|
@ stub WsResetChannel
|
||||||
@ stub WsResetError
|
@ stdcall WsResetError(ptr)
|
||||||
@ stdcall WsResetHeap(ptr ptr)
|
@ stdcall WsResetHeap(ptr ptr)
|
||||||
@ stub WsResetListener
|
@ stub WsResetListener
|
||||||
@ stub WsResetMessage
|
@ stub WsResetMessage
|
||||||
|
|
|
@ -1148,6 +1148,7 @@ HRESULT WINAPI WsReadToStartElement(WS_XML_READER*, const WS_XML_STRING*, const
|
||||||
HRESULT WINAPI WsReadType(WS_XML_READER*, WS_TYPE_MAPPING, WS_TYPE, const void*, WS_READ_OPTION,
|
HRESULT WINAPI WsReadType(WS_XML_READER*, WS_TYPE_MAPPING, WS_TYPE, const void*, WS_READ_OPTION,
|
||||||
WS_HEAP*, void*, ULONG, WS_ERROR*);
|
WS_HEAP*, void*, ULONG, WS_ERROR*);
|
||||||
HRESULT WINAPI WsReadValue(WS_XML_READER*, WS_VALUE_TYPE, void*, ULONG, WS_ERROR*);
|
HRESULT WINAPI WsReadValue(WS_XML_READER*, WS_VALUE_TYPE, void*, ULONG, WS_ERROR*);
|
||||||
|
HRESULT WINAPI WsResetError(WS_ERROR*);
|
||||||
HRESULT WINAPI WsResetHeap(WS_HEAP*, WS_ERROR*);
|
HRESULT WINAPI WsResetHeap(WS_HEAP*, WS_ERROR*);
|
||||||
HRESULT WINAPI WsSendMessage(WS_CHANNEL*, WS_MESSAGE*, const WS_MESSAGE_DESCRIPTION*, WS_WRITE_OPTION,
|
HRESULT WINAPI WsSendMessage(WS_CHANNEL*, WS_MESSAGE*, const WS_MESSAGE_DESCRIPTION*, WS_WRITE_OPTION,
|
||||||
const void*, ULONG, const WS_ASYNC_CONTEXT*, WS_ERROR*);
|
const void*, ULONG, const WS_ASYNC_CONTEXT*, WS_ERROR*);
|
||||||
|
|
Loading…
Reference in New Issue