diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c index a26d943fa30..067ea2bdc2d 100644 --- a/dlls/d3d9/device.c +++ b/dlls/d3d9/device.c @@ -1757,6 +1757,9 @@ static HRESULT WINAPI d3d9_device_ColorFill(IDirect3DDevice9Ex *iface, TRACE("iface %p, surface %p, rect %p, color 0x%08x.\n", iface, surface, rect, color); + if (!surface) + return D3DERR_INVALIDCALL; + wined3d_mutex_lock(); if (FAILED(wined3d_texture_get_sub_resource_desc(surface_impl->wined3d_texture, diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c index 1f28fe13e88..c06acb77d4d 100644 --- a/dlls/d3d9/tests/visual.c +++ b/dlls/d3d9/tests/visual.c @@ -1529,6 +1529,9 @@ static void color_fill_test(void) goto done; } + hr = IDirect3DDevice9_ColorFill(device, NULL, NULL, 0); + ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr); + /* Test ColorFill on a the backbuffer (should pass) */ hr = IDirect3DDevice9_GetBackBuffer(device, 0, 0, D3DBACKBUFFER_TYPE_MONO, &surface); ok(hr == D3D_OK, "Can't get back buffer, hr = %08x\n", hr);