From fcb72f399d7df43934012fbb10ac339de73a67f1 Mon Sep 17 00:00:00 2001 From: Christian Costa Date: Thu, 13 Jun 2013 09:00:50 +0200 Subject: [PATCH] d3dx9_36: Set compilation_errors to NULL when no error encountered + tests. --- dlls/d3dx9_36/effect.c | 3 +++ dlls/d3dx9_36/tests/effect.c | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c index 1924c07b7ba..8ab10677d92 100644 --- a/dlls/d3dx9_36/effect.c +++ b/dlls/d3dx9_36/effect.c @@ -5768,6 +5768,9 @@ HRESULT WINAPI D3DXCreateEffectEx(struct IDirect3DDevice9 *device, const void *s FIXME("(%p, %p, %u, %p, %p, %p, %#x, %p, %p, %p): semi-stub\n", device, srcdata, srcdatalen, defines, include, skip_constants, flags, pool, effect, compilation_errors); + if (compilation_errors) + *compilation_errors = NULL; + if (!device || !srcdata) return D3DERR_INVALIDCALL; diff --git a/dlls/d3dx9_36/tests/effect.c b/dlls/d3dx9_36/tests/effect.c index 7f238beb692..c67e863f7b6 100644 --- a/dlls/d3dx9_36/tests/effect.c +++ b/dlls/d3dx9_36/tests/effect.c @@ -2662,6 +2662,26 @@ static void test_effect_variable_names(IDirect3DDevice9 *device) ok(!count, "Release failed %u\n", count); } +static void test_effect_compilation_errors(IDirect3DDevice9 *device) +{ + ID3DXEffect *effect; + ID3DXBuffer *compilation_errors; + HRESULT hr; + + /* Test binary effect */ + compilation_errors = (ID3DXBuffer*)0xdeadbeef; + hr = D3DXCreateEffect(NULL, NULL, 0, NULL, NULL, 0, NULL, NULL, &compilation_errors); + ok(hr == D3DERR_INVALIDCALL, "D3DXCreateEffect failed, got %#x, expected %#x\n", hr, D3DERR_INVALIDCALL); + ok(!compilation_errors, "Returned %p\n", compilation_errors); + + compilation_errors = (ID3DXBuffer*)0xdeadbeef; + hr = D3DXCreateEffect(device, test_effect_variable_names_blob, + sizeof(test_effect_variable_names_blob), NULL, NULL, 0, NULL, &effect, &compilation_errors); + ok(hr == D3D_OK, "D3DXCreateEffect failed, got %#x, expected %#x\n", hr, D3D_OK); + ok(!compilation_errors, "Returned %p\n", compilation_errors); + effect->lpVtbl->Release(effect); +} + START_TEST(effect) { HWND wnd; @@ -2698,6 +2718,7 @@ START_TEST(effect) test_create_effect_compiler(); test_effect_parameter_value(device); test_effect_variable_names(device); + test_effect_compilation_errors(device); count = IDirect3DDevice9_Release(device); ok(count == 0, "The device was not properly freed: refcount %u\n", count);