(try 2)[PATCH 1/4] d3dcompiler: Add initial reflection parsing.

Henri Verbeet hverbeet at gmail.com
Tue Nov 9 05:01:49 CST 2010


2010/11/8 Rico Schüller <kgbricola at web.de>:
> -    object->vtbl = &d3dcompiler_shader_reflection_vtbl;
> -    object->refcount = 1;
> +    hr = d3dcompiler_shader_reflection_init(object, data, data_size, riid);
> +    if (FAILED(hr))
> +    {
> +        WARN("Failed to initialize shader reflection\n");
> +        IUnknown_Release((IUnknown *)object);
> +        return hr;
> +    }
You can't do that. Since d3dcompiler_shader_reflection_init() is
responsible for setting the vtbl, you can't assume it's set if
d3dcompiler_shader_reflection_init() fails. You'll have to use
HeapFree() here.

> +    if (!IsEqualGUID(riid, &IID_ID3D11ShaderReflection))
> +    {
> +        WARN("Wrong rrid %s, accept only %s!\n", debugstr_guid(riid), debugstr_guid(&IID_ID3D11ShaderReflection));
> +        return E_FAIL;
> +    }
This can be done in D3DReflect() before even allocating the reflection
object. (Also, "rrid" is a typo.)



More information about the wine-devel mailing list