d3d9: Don't assert when apps pass in the wrong shader iface.

Michael Stefaniuc mstefani at redhat.de
Mon Dec 15 08:29:27 CST 2014


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



More information about the wine-patches mailing list