mirror of
git://source.winehq.org/git/wine.git
synced 2024-07-18 21:53:50 +00:00
d3d10: Handle invalid arguments for effect creation.
Passing NULL data to D3D10CreateEffectFromMemory crashes. Passing NULL data to D3D10CreateEffectPoolFromMemory returns E_INVALIDARG.
This commit is contained in:
parent
6c4f9ec527
commit
bd5cdef5dd
|
@ -9537,6 +9537,9 @@ static HRESULT d3d10_create_effect(void *data, SIZE_T data_size, ID3D10Device *d
|
|||
struct d3d10_effect *object;
|
||||
HRESULT hr;
|
||||
|
||||
if (!device)
|
||||
return D3DERR_INVALIDCALL;
|
||||
|
||||
if (!(object = calloc(1, sizeof(*object))))
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
|
@ -9636,6 +9639,9 @@ HRESULT WINAPI D3D10CreateEffectPoolFromMemory(void *data, SIZE_T data_size, UIN
|
|||
TRACE("data %p, data_size %Iu, fx_flags %#x, device %p, effect_pool %p.\n",
|
||||
data, data_size, fx_flags, device, effect_pool);
|
||||
|
||||
if (!data)
|
||||
return E_INVALIDARG;
|
||||
|
||||
if (FAILED(hr = d3d10_create_effect(data, data_size, device, NULL,
|
||||
D3D10_EFFECT_IS_POOL, &object)))
|
||||
{
|
||||
|
|
|
@ -118,11 +118,8 @@ static void test_effect_constant_buffer_type(void)
|
|||
return;
|
||||
}
|
||||
|
||||
if (strcmp(winetest_platform, "wine")) /* Crash on wine. */
|
||||
{
|
||||
hr = create_effect(fx_test_ecbt, 0, NULL, NULL, &effect);
|
||||
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#lx.\n", hr);
|
||||
}
|
||||
|
||||
hr = create_effect(fx_test_ecbt, 0, device, NULL, &effect);
|
||||
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
@ -7120,14 +7117,10 @@ static void test_effect_pool(void)
|
|||
ok(!!device2, "Failed to create d3d device.\n");
|
||||
|
||||
hr = D3D10CreateEffectPoolFromMemory(NULL, 0, 0, device, &pool);
|
||||
todo_wine
|
||||
ok(hr == E_INVALIDARG, "Got unexpected hr %#lx.\n", hr);
|
||||
|
||||
if (strcmp(winetest_platform, "wine")) /* Crash on wine. */
|
||||
{
|
||||
hr = create_effect_pool(fx_test_pool, NULL, &pool);
|
||||
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#lx.\n", hr);
|
||||
}
|
||||
|
||||
hr = create_effect_pool(fx_test_pool, device, &pool);
|
||||
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
|
Loading…
Reference in a new issue