From: Nikolay Sivov nsivov@codeweavers.com
--- dlls/d3dcompiler_43/compiler.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/dlls/d3dcompiler_43/compiler.c b/dlls/d3dcompiler_43/compiler.c index 3f302f23503..a7926785184 100644 --- a/dlls/d3dcompiler_43/compiler.c +++ b/dlls/d3dcompiler_43/compiler.c @@ -556,17 +556,21 @@ HRESULT WINAPI D3DCompile2(const void *data, SIZE_T data_size, const char *filen vkd3d_shader_free_messages(messages); }
- if (!ret && shader_blob) + if (ret) + return hresult_from_vkd3d_result(ret); + + if (!shader_blob) { - if (FAILED(hr = D3DCreateBlob(byte_code.size, shader_blob))) - { - vkd3d_shader_free_shader_code(&byte_code); - return hr; - } - memcpy(ID3D10Blob_GetBufferPointer(*shader_blob), byte_code.code, byte_code.size); + vkd3d_shader_free_shader_code(&byte_code); + return S_OK; }
- return hresult_from_vkd3d_result(ret); + if (SUCCEEDED(hr = D3DCreateBlob(byte_code.size, shader_blob))) + memcpy(ID3D10Blob_GetBufferPointer(*shader_blob), byte_code.code, byte_code.size); + + vkd3d_shader_free_shader_code(&byte_code); + + return hr; }
HRESULT WINAPI D3DCompile(const void *data, SIZE_T data_size, const char *filename,