ddraw: Add a NULL callback pointer check in the EnumDevices implementations.
This commit is contained in:
parent
7cd97b2ed4
commit
cf6d56a43a
@ -4234,6 +4234,9 @@ static HRESULT WINAPI d3d7_EnumDevices(IDirect3D7 *iface, LPD3DENUMDEVICESCALLBA
|
|||||||
|
|
||||||
TRACE("iface %p, callback %p, context %p.\n", iface, callback, context);
|
TRACE("iface %p, callback %p, context %p.\n", iface, callback, context);
|
||||||
|
|
||||||
|
if (!callback)
|
||||||
|
return DDERR_INVALIDPARAMS;
|
||||||
|
|
||||||
EnterCriticalSection(&ddraw_cs);
|
EnterCriticalSection(&ddraw_cs);
|
||||||
|
|
||||||
hr = IDirect3DImpl_GetCaps(This->wineD3D, &device_desc1, &device_desc7);
|
hr = IDirect3DImpl_GetCaps(This->wineD3D, &device_desc1, &device_desc7);
|
||||||
@ -4291,6 +4294,9 @@ static HRESULT WINAPI d3d3_EnumDevices(IDirect3D3 *iface, LPD3DENUMDEVICESCALLBA
|
|||||||
|
|
||||||
TRACE("iface %p, callback %p, context %p.\n", iface, callback, context);
|
TRACE("iface %p, callback %p, context %p.\n", iface, callback, context);
|
||||||
|
|
||||||
|
if (!callback)
|
||||||
|
return DDERR_INVALIDPARAMS;
|
||||||
|
|
||||||
EnterCriticalSection(&ddraw_cs);
|
EnterCriticalSection(&ddraw_cs);
|
||||||
|
|
||||||
hr = IDirect3DImpl_GetCaps(This->wineD3D, &device_desc1, &device_desc7);
|
hr = IDirect3DImpl_GetCaps(This->wineD3D, &device_desc1, &device_desc7);
|
||||||
|
@ -865,8 +865,12 @@ static HRESULT WINAPI enumDevicesCallbackTest7(LPSTR DeviceDescription, LPSTR De
|
|||||||
IDirect3D7_EnumDevices. */
|
IDirect3D7_EnumDevices. */
|
||||||
static void D3D7EnumTest(void)
|
static void D3D7EnumTest(void)
|
||||||
{
|
{
|
||||||
|
HRESULT hr;
|
||||||
D3D7ETest d3d7et;
|
D3D7ETest d3d7et;
|
||||||
|
|
||||||
|
hr = IDirect3D7_EnumDevices(lpD3D, NULL, NULL);
|
||||||
|
ok(hr == DDERR_INVALIDPARAMS, "IDirect3D7_EnumDevices returned 0x%08x\n", hr);
|
||||||
|
|
||||||
memset(&d3d7et, 0, sizeof(d3d7et));
|
memset(&d3d7et, 0, sizeof(d3d7et));
|
||||||
IDirect3D7_EnumDevices(lpD3D, enumDevicesCallbackTest7, &d3d7et);
|
IDirect3D7_EnumDevices(lpD3D, enumDevicesCallbackTest7, &d3d7et);
|
||||||
|
|
||||||
@ -892,6 +896,10 @@ static void CapsTest(void)
|
|||||||
ok(hr == DD_OK, "Cannot create a DirectDraw 1 interface, hr = %08x\n", hr);
|
ok(hr == DD_OK, "Cannot create a DirectDraw 1 interface, hr = %08x\n", hr);
|
||||||
hr = IDirectDraw_QueryInterface(dd1, &IID_IDirect3D3, (void **) &d3d3);
|
hr = IDirectDraw_QueryInterface(dd1, &IID_IDirect3D3, (void **) &d3d3);
|
||||||
ok(hr == D3D_OK, "IDirectDraw_QueryInterface returned %08x\n", hr);
|
ok(hr == D3D_OK, "IDirectDraw_QueryInterface returned %08x\n", hr);
|
||||||
|
|
||||||
|
hr = IDirect3D3_EnumDevices(d3d3, NULL, NULL);
|
||||||
|
ok(hr == DDERR_INVALIDPARAMS, "IDirect3D3_EnumDevices returned 0x%08x\n", hr);
|
||||||
|
|
||||||
ver = 3;
|
ver = 3;
|
||||||
IDirect3D3_EnumDevices(d3d3, enumDevicesCallback, &ver);
|
IDirect3D3_EnumDevices(d3d3, enumDevicesCallback, &ver);
|
||||||
|
|
||||||
@ -902,6 +910,10 @@ static void CapsTest(void)
|
|||||||
ok(hr == DD_OK, "Cannot create a DirectDraw 1 interface, hr = %08x\n", hr);
|
ok(hr == DD_OK, "Cannot create a DirectDraw 1 interface, hr = %08x\n", hr);
|
||||||
hr = IDirectDraw_QueryInterface(dd1, &IID_IDirect3D2, (void **) &d3d2);
|
hr = IDirectDraw_QueryInterface(dd1, &IID_IDirect3D2, (void **) &d3d2);
|
||||||
ok(hr == D3D_OK, "IDirectDraw_QueryInterface returned %08x\n", hr);
|
ok(hr == D3D_OK, "IDirectDraw_QueryInterface returned %08x\n", hr);
|
||||||
|
|
||||||
|
hr = IDirect3D2_EnumDevices(d3d2, NULL, NULL);
|
||||||
|
ok(hr == DDERR_INVALIDPARAMS, "IDirect3D2_EnumDevices returned 0x%08x\n", hr);
|
||||||
|
|
||||||
ver = 2;
|
ver = 2;
|
||||||
IDirect3D2_EnumDevices(d3d2, enumDevicesCallback, &ver);
|
IDirect3D2_EnumDevices(d3d2, enumDevicesCallback, &ver);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user