[PATCH] d3dx9: Improve argument validation in CloneEffect()

Nikolay Sivov bunglehead at gmail.com
Fri Mar 2 00:28:27 CST 2018


On 3/2/2018 3:31 AM, Matteo Bruni wrote:
> 2018-03-01 13:14 GMT+01:00 Nikolay Sivov <nsivov at codeweavers.com>:
> 
>> diff --git a/dlls/d3dx9_36/tests/effect.c b/dlls/d3dx9_36/tests/effect.c
>> index 1900f3eac1..28dcf47cd3 100644
>> --- a/dlls/d3dx9_36/tests/effect.c
>> +++ b/dlls/d3dx9_36/tests/effect.c
>> @@ -7294,6 +7294,91 @@ static void test_effect_null_shader(void)
>>      DestroyWindow(window);
>>  }
>>
>> +static void test_effect_clone(IDirect3DDevice9 *device)
> 
> Could you make the test create its own device instead, like the last
> two tests added to the file?

Does it mean other tests should not reuse it either?

> 
>> +    memset(&present_parameters, 0, sizeof(present_parameters));
>> +    present_parameters.Windowed = TRUE;
>> +    present_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
>> +    hr = IDirect3D9_CreateDevice(d3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, window,
>> +            D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, &device2);
>> +    ok(SUCCEEDED(hr), "Failed to create IDirect3DDevice9 object, hr %#x\n", hr);
>> +
>> +    hr = effect->lpVtbl->CloneEffect(effect, device2, &cloned);
>> +todo_wine
>> +    ok(hr == D3D_OK, "Got result %#x.\n", hr);
>> +if (hr == D3D_OK)
>> +{
>> +    ok(cloned != effect, "Expected new effect instance.\n");
>> +    cloned->lpVtbl->Release(cloned);
>> +}
> 
> Here you could also check (via the GetDevice() method) that the cloned
> effect actually uses the new device. I don't expect surprises though.
> 

Sure, but yes, looks unlikely that it doesn't.




More information about the wine-devel mailing list