From: Michael Stefaniuc Subject: d3d9: Don't assert when apps pass in the wrong shader iface. Message-Id: <20141215142927.GA5310@redhat.com> Date: Mon, 15 Dec 2014 15:29:27 +0100 Fixes a regression reported in https://bugs.winehq.org/show_bug.cgi?id=37723 --- dlls/d3d9/shader.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dlls/d3d9/shader.c b/dlls/d3d9/shader.c index 0c2c881..9541028 100644 --- a/dlls/d3d9/shader.c +++ b/dlls/d3d9/shader.c @@ -165,9 +165,8 @@ HRESULT vertexshader_init(struct d3d9_vertexshader *shader, struct d3d9_device * struct d3d9_vertexshader *unsafe_impl_from_IDirect3DVertexShader9(IDirect3DVertexShader9 *iface) { - if (!iface) + if (!iface && iface->lpVtbl != &d3d9_vertexshader_vtbl) return NULL; - assert(iface->lpVtbl == &d3d9_vertexshader_vtbl); return impl_from_IDirect3DVertexShader9(iface); } @@ -315,9 +314,8 @@ HRESULT pixelshader_init(struct d3d9_pixelshader *shader, struct d3d9_device *de struct d3d9_pixelshader *unsafe_impl_from_IDirect3DPixelShader9(IDirect3DPixelShader9 *iface) { - if (!iface) + if (!iface && iface->lpVtbl != &d3d9_pixelshader_vtbl) return NULL; - assert(iface->lpVtbl == &d3d9_pixelshader_vtbl); return impl_from_IDirect3DPixelShader9(iface); } -- 1.9.3