1
0
mirror of https://github.com/wine-mirror/wine synced 2024-07-08 03:45:57 +00:00

windows.networking.hostname: Duplicate passed HSTRING in IHostNameFactory::CreateHostName().

This commit is contained in:
Mohamad Al-Jaf 2023-07-08 00:49:25 -04:00 committed by Alexandre Julliard
parent 95bfbdc87f
commit ce3ccccb2c
2 changed files with 12 additions and 4 deletions

View File

@ -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 );

View File

@ -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 );