mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d: Handle NULL pointers in vkd3d_private_store_set_private_data().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
e13fb138cd
commit
5a1408c78d
@ -527,6 +527,17 @@ static HRESULT vkd3d_private_store_set_private_data(struct vkd3d_private_store *
|
|||||||
struct vkd3d_private_data *d, *old_data;
|
struct vkd3d_private_data *d, *old_data;
|
||||||
const void *ptr = data;
|
const void *ptr = data;
|
||||||
|
|
||||||
|
if (!data)
|
||||||
|
{
|
||||||
|
if ((d = vkd3d_private_store_get_private_data(store, tag)))
|
||||||
|
{
|
||||||
|
vkd3d_private_data_destroy(d);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
return S_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_object)
|
if (is_object)
|
||||||
{
|
{
|
||||||
if (data_size != sizeof(IUnknown *))
|
if (data_size != sizeof(IUnknown *))
|
||||||
@ -584,25 +595,12 @@ HRESULT vkd3d_get_private_data(struct vkd3d_private_store *store,
|
|||||||
HRESULT vkd3d_set_private_data(struct vkd3d_private_store *store,
|
HRESULT vkd3d_set_private_data(struct vkd3d_private_store *store,
|
||||||
const GUID *tag, unsigned int data_size, const void *data)
|
const GUID *tag, unsigned int data_size, const void *data)
|
||||||
{
|
{
|
||||||
struct vkd3d_private_data *d;
|
|
||||||
|
|
||||||
if (!data)
|
|
||||||
{
|
|
||||||
if (!(d = vkd3d_private_store_get_private_data(store, tag)))
|
|
||||||
return S_FALSE;
|
|
||||||
|
|
||||||
vkd3d_private_data_destroy(d);
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
return vkd3d_private_store_set_private_data(store, tag, data, data_size, false);
|
return vkd3d_private_store_set_private_data(store, tag, data, data_size, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT vkd3d_set_private_data_interface(struct vkd3d_private_store *store,
|
HRESULT vkd3d_set_private_data_interface(struct vkd3d_private_store *store,
|
||||||
const GUID *tag, const IUnknown *object)
|
const GUID *tag, const IUnknown *object)
|
||||||
{
|
{
|
||||||
if (!object)
|
const void *data = object ? object : (void *)&object;
|
||||||
return vkd3d_set_private_data(store, tag, sizeof(object), &object);
|
return vkd3d_private_store_set_private_data(store, tag, data, sizeof(object), !!object);
|
||||||
|
|
||||||
return vkd3d_private_store_set_private_data(store, tag, object, sizeof(object), true);
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user