windows.networking.hostname: Duplicate passed HSTRING in IHostNameFactory::CreateHostName().
This commit is contained in:
parent
95bfbdc87f
commit
ce3ccccb2c
2 changed files with 12 additions and 4 deletions
|
@ -120,7 +120,7 @@ struct hostname
|
|||
IHostName IHostName_iface;
|
||||
LONG ref;
|
||||
|
||||
HSTRING rawname;
|
||||
HSTRING raw_name;
|
||||
};
|
||||
|
||||
static inline struct hostname *impl_from_IHostName( IHostName *iface )
|
||||
|
@ -161,7 +161,15 @@ static ULONG WINAPI hostname_Release( IHostName *iface )
|
|||
{
|
||||
struct hostname *impl = impl_from_IHostName( iface );
|
||||
ULONG ref = InterlockedDecrement( &impl->ref );
|
||||
|
||||
TRACE( "iface %p decreasing refcount to %lu.\n", iface, ref );
|
||||
|
||||
if (!ref)
|
||||
{
|
||||
WindowsDeleteString( impl->raw_name );
|
||||
free( impl );
|
||||
}
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
|
@ -196,7 +204,7 @@ static HRESULT WINAPI hostname_get_RawName( IHostName *iface, HSTRING *value )
|
|||
TRACE( "iface %p, value %p.\n", iface, value );
|
||||
|
||||
if (!value) return E_INVALIDARG;
|
||||
return WindowsDuplicateString( impl->rawname, value );
|
||||
return WindowsDuplicateString( impl->raw_name, value );
|
||||
}
|
||||
|
||||
static HRESULT WINAPI hostname_get_DisplayName( IHostName *iface, HSTRING *value )
|
||||
|
@ -255,7 +263,7 @@ static HRESULT WINAPI hostname_factory_CreateHostName( IHostNameFactory *iface,
|
|||
|
||||
impl->IHostName_iface.lpVtbl = &hostname_vtbl;
|
||||
impl->ref = 1;
|
||||
impl->rawname = name;
|
||||
WindowsDuplicateString( name, &impl->raw_name );
|
||||
|
||||
*value = &impl->IHostName_iface;
|
||||
TRACE( "created IHostName %p.\n", *value );
|
||||
|
|
|
@ -101,7 +101,7 @@ static void test_HostnameStatics(void)
|
|||
hr = WindowsCompareStringOrdinal( str, rawname, &res );
|
||||
ok( hr == S_OK, "got hr %#lx.\n", hr );
|
||||
ok( !res, "got unexpected string %s.\n", debugstr_hstring(rawname) );
|
||||
todo_wine ok( str != rawname, "got same HSTRINGs %p, %p.\n", str, rawname );
|
||||
ok( str != rawname, "got same HSTRINGs %p, %p.\n", str, rawname );
|
||||
|
||||
WindowsDeleteString( str );
|
||||
WindowsDeleteString( rawname );
|
||||
|
|
Loading…
Add table
Reference in a new issue