wbemprox: Return an empty object if the path is NULL or empty.
This commit is contained in:
parent
6da3ce276b
commit
07197a19f2
|
@ -1015,8 +1015,8 @@ HRESULT create_class_object( const WCHAR *name, IEnumWbemClassObject *iter, UINT
|
||||||
|
|
||||||
co->IWbemClassObject_iface.lpVtbl = &class_object_vtbl;
|
co->IWbemClassObject_iface.lpVtbl = &class_object_vtbl;
|
||||||
co->refs = 1;
|
co->refs = 1;
|
||||||
co->name = heap_strdupW( name );
|
if (!name) co->name = NULL;
|
||||||
if (!co->name)
|
else if (!(co->name = heap_strdupW( name )))
|
||||||
{
|
{
|
||||||
heap_free( co );
|
heap_free( co );
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
|
|
|
@ -352,11 +352,9 @@ static HRESULT WINAPI wbem_services_GetObject(
|
||||||
|
|
||||||
if (lFlags) FIXME("unsupported flags 0x%08x\n", lFlags);
|
if (lFlags) FIXME("unsupported flags 0x%08x\n", lFlags);
|
||||||
|
|
||||||
if (!strObjectPath)
|
if (!strObjectPath || !strObjectPath[0])
|
||||||
{
|
return create_class_object( NULL, NULL, 0, NULL, ppObject );
|
||||||
FIXME("no support for creating new classes\n");
|
|
||||||
return WBEM_E_FAILED;
|
|
||||||
}
|
|
||||||
return get_object( strObjectPath, ppObject );
|
return get_object( strObjectPath, ppObject );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -146,7 +146,8 @@ static void test_Win32_Service( IWbemServices *services )
|
||||||
static const WCHAR stoppedW[] = {'S','t','o','p','p','e','d',0};
|
static const WCHAR stoppedW[] = {'S','t','o','p','p','e','d',0};
|
||||||
static const WCHAR serviceW[] = {'W','i','n','3','2','_','S','e','r','v','i','c','e','.',
|
static const WCHAR serviceW[] = {'W','i','n','3','2','_','S','e','r','v','i','c','e','.',
|
||||||
'N','a','m','e','=','"','S','p','o','o','l','e','r','"',0};
|
'N','a','m','e','=','"','S','p','o','o','l','e','r','"',0};
|
||||||
BSTR class = SysAllocString( serviceW ), method;
|
static const WCHAR emptyW[] = {0};
|
||||||
|
BSTR class = SysAllocString( serviceW ), empty = SysAllocString( emptyW ), method;
|
||||||
IWbemClassObject *service, *out;
|
IWbemClassObject *service, *out;
|
||||||
VARIANT state, retval;
|
VARIANT state, retval;
|
||||||
CIMTYPE type;
|
CIMTYPE type;
|
||||||
|
@ -219,6 +220,18 @@ static void test_Win32_Service( IWbemServices *services )
|
||||||
}
|
}
|
||||||
VariantClear( &state );
|
VariantClear( &state );
|
||||||
IWbemClassObject_Release( service );
|
IWbemClassObject_Release( service );
|
||||||
|
|
||||||
|
service = NULL;
|
||||||
|
hr = IWbemServices_GetObject( services, NULL, 0, NULL, &service, NULL );
|
||||||
|
ok( hr == S_OK, "got %08x\n", hr );
|
||||||
|
if (service) IWbemClassObject_Release( service );
|
||||||
|
|
||||||
|
service = NULL;
|
||||||
|
hr = IWbemServices_GetObject( services, empty, 0, NULL, &service, NULL );
|
||||||
|
ok( hr == S_OK, "got %08x\n", hr );
|
||||||
|
if (service) IWbemClassObject_Release( service );
|
||||||
|
|
||||||
|
SysFreeString( empty );
|
||||||
SysFreeString( class );
|
SysFreeString( class );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue