D3D: Fix QueryInterface

H. Verbeet hverbeet at gmail.com
Wed Jun 7 08:13:29 CDT 2006


QueryInterface should return S_OK on success and set the object
pointer to NULL on failure. This is similar to the patch Ivan
submitted a while ago for wined3d.

Changelog:
  - Fix QueryInterface
-------------- next part --------------
diff --git a/dlls/d3d8/basetexture.c b/dlls/d3d8/basetexture.c
index 804e83a..f7e4748 100644
--- a/dlls/d3d8/basetexture.c
+++ b/dlls/d3d8/basetexture.c
@@ -32,11 +32,12 @@ HRESULT WINAPI IDirect3DBaseTexture8Impl
         || IsEqualGUID(riid, &IID_IDirect3DBaseTexture8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
 
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/cubetexture.c b/dlls/d3d8/cubetexture.c
index 5ad0f7c..763b28c 100644
--- a/dlls/d3d8/cubetexture.c
+++ b/dlls/d3d8/cubetexture.c
@@ -32,10 +32,11 @@ HRESULT WINAPI IDirect3DCubeTexture8Impl
         || IsEqualGUID(riid, &IID_IDirect3DCubeTexture8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
index 6ebe678..91872ef 100644
--- a/dlls/d3d8/device.c
+++ b/dlls/d3d8/device.c
@@ -45,10 +45,11 @@ HRESULT WINAPI IDirect3DDevice8Impl_Quer
         || IsEqualGUID(riid, &IID_IDirect3DDevice8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/directx.c b/dlls/d3d8/directx.c
index 47611bf..4ba8a2f 100644
--- a/dlls/d3d8/directx.c
+++ b/dlls/d3d8/directx.c
@@ -46,10 +46,11 @@ HRESULT WINAPI IDirect3D8Impl_QueryInter
         || IsEqualGUID(riid, &IID_IDirect3D8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid),ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/indexbuffer.c b/dlls/d3d8/indexbuffer.c
index a83e72a..1df5d88 100644
--- a/dlls/d3d8/indexbuffer.c
+++ b/dlls/d3d8/indexbuffer.c
@@ -32,10 +32,11 @@ HRESULT WINAPI IDirect3DIndexBuffer8Impl
         || IsEqualGUID(riid, &IID_IDirect3DIndexBuffer8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/pixelshader.c b/dlls/d3d8/pixelshader.c
index 968eda1..9ebb9dd 100644
--- a/dlls/d3d8/pixelshader.c
+++ b/dlls/d3d8/pixelshader.c
@@ -32,10 +32,11 @@ HRESULT WINAPI IDirect3DPixelShader8Impl
         || IsEqualGUID(riid, &IID_IDirect3DPixelShader8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/resource.c b/dlls/d3d8/resource.c
index 3e395fb..5bde093 100644
--- a/dlls/d3d8/resource.c
+++ b/dlls/d3d8/resource.c
@@ -31,10 +31,11 @@ HRESULT WINAPI IDirect3DResource8Impl_Qu
         || IsEqualGUID(riid, &IID_IDirect3DResource8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/stateblock.c b/dlls/d3d8/stateblock.c
index b1634d5..320810b 100644
--- a/dlls/d3d8/stateblock.c
+++ b/dlls/d3d8/stateblock.c
@@ -34,10 +34,11 @@ HRESULT WINAPI IDirect3DStateBlock8Impl_
         || IsEqualGUID(riid, &IID_IDirect3DStateBlock8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/surface.c b/dlls/d3d8/surface.c
index 4c589d7..8fe7eea 100644
--- a/dlls/d3d8/surface.c
+++ b/dlls/d3d8/surface.c
@@ -32,10 +32,11 @@ HRESULT WINAPI IDirect3DSurface8Impl_Que
         || IsEqualGUID(riid, &IID_IDirect3DSurface8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/swapchain.c b/dlls/d3d8/swapchain.c
index dcba111..6c9913f 100644
--- a/dlls/d3d8/swapchain.c
+++ b/dlls/d3d8/swapchain.c
@@ -32,10 +32,11 @@ HRESULT WINAPI IDirect3DSwapChain8Impl_Q
         || IsEqualGUID(riid, &IID_IDirect3DSwapChain8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/texture.c b/dlls/d3d8/texture.c
index be52192..d01867f 100644
--- a/dlls/d3d8/texture.c
+++ b/dlls/d3d8/texture.c
@@ -33,10 +33,11 @@ HRESULT WINAPI IDirect3DTexture8Impl_Que
         || IsEqualGUID(riid, &IID_IDirect3DTexture8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p) not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/vertexbuffer.c b/dlls/d3d8/vertexbuffer.c
index 36691bc..402514b 100644
--- a/dlls/d3d8/vertexbuffer.c
+++ b/dlls/d3d8/vertexbuffer.c
@@ -32,11 +32,12 @@ HRESULT WINAPI IDirect3DVertexBuffer8Imp
         || IsEqualGUID(riid, &IID_IDirect3DVertexBuffer8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
 
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/vertexshader.c b/dlls/d3d8/vertexshader.c
index bf88998..b1fb6a1 100644
--- a/dlls/d3d8/vertexshader.c
+++ b/dlls/d3d8/vertexshader.c
@@ -32,10 +32,11 @@ HRESULT WINAPI IDirect3DVertexShader8Imp
         || IsEqualGUID(riid, &IID_IDirect3DVertexShader8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/volume.c b/dlls/d3d8/volume.c
index b96e802..f6e6473 100644
--- a/dlls/d3d8/volume.c
+++ b/dlls/d3d8/volume.c
@@ -31,10 +31,11 @@ HRESULT WINAPI IDirect3DVolume8Impl_Quer
         || IsEqualGUID(riid, &IID_IDirect3DVolume8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d8/volumetexture.c b/dlls/d3d8/volumetexture.c
index c68bfa3..04297f4 100644
--- a/dlls/d3d8/volumetexture.c
+++ b/dlls/d3d8/volumetexture.c
@@ -33,10 +33,11 @@ HRESULT WINAPI IDirect3DVolumeTexture8Im
     || IsEqualGUID(riid, &IID_IDirect3DVolumeTexture8)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/basetexture.c b/dlls/d3d9/basetexture.c
index 29e6b8b..910862b 100644
--- a/dlls/d3d9/basetexture.c
+++ b/dlls/d3d9/basetexture.c
@@ -33,10 +33,11 @@ HRESULT WINAPI IDirect3DBaseTexture9Impl
         || IsEqualGUID(riid, &IID_IDirect3DBaseTexture9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/cubetexture.c b/dlls/d3d9/cubetexture.c
index 2594147..21464f9 100644
--- a/dlls/d3d9/cubetexture.c
+++ b/dlls/d3d9/cubetexture.c
@@ -35,10 +35,11 @@ HRESULT WINAPI IDirect3DCubeTexture9Impl
         || IsEqualGUID(riid, &IID_IDirect3DCubeTexture9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c
index c6f0527..34973ce 100644
--- a/dlls/d3d9/device.c
+++ b/dlls/d3d9/device.c
@@ -34,10 +34,11 @@ HRESULT WINAPI IDirect3DDevice9Impl_Quer
         || IsEqualGUID(riid, &IID_IDirect3DDevice9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/directx.c b/dlls/d3d9/directx.c
index 808af0a..2c20967 100644
--- a/dlls/d3d9/directx.c
+++ b/dlls/d3d9/directx.c
@@ -33,10 +33,11 @@ HRESULT WINAPI IDirect3D9Impl_QueryInter
         || IsEqualGUID(riid, &IID_IDirect3D9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/indexbuffer.c b/dlls/d3d9/indexbuffer.c
index a780237..a46831e 100644
--- a/dlls/d3d9/indexbuffer.c
+++ b/dlls/d3d9/indexbuffer.c
@@ -33,10 +33,11 @@ HRESULT WINAPI IDirect3DIndexBuffer9Impl
         || IsEqualGUID(riid, &IID_IDirect3DIndexBuffer9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/pixelshader.c b/dlls/d3d9/pixelshader.c
index fce6590..4be4ca0 100644
--- a/dlls/d3d9/pixelshader.c
+++ b/dlls/d3d9/pixelshader.c
@@ -32,10 +32,11 @@ HRESULT WINAPI IDirect3DPixelShader9Impl
         || IsEqualGUID(riid, &IID_IDirect3DPixelShader9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/query.c b/dlls/d3d9/query.c
index 0752902..22de219 100644
--- a/dlls/d3d9/query.c
+++ b/dlls/d3d9/query.c
@@ -34,10 +34,11 @@ HRESULT WINAPI IDirect3DQuery9Impl_Query
         || IsEqualGUID(riid, &IID_IDirect3DQuery9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/resource.c b/dlls/d3d9/resource.c
index 3ef38d3..d3ac577 100644
--- a/dlls/d3d9/resource.c
+++ b/dlls/d3d9/resource.c
@@ -32,10 +32,11 @@ HRESULT WINAPI IDirect3DResource9Impl_Qu
         || IsEqualGUID(riid, &IID_IDirect3DResource9)) {
         IDirect3DResource9Impl_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/stateblock.c b/dlls/d3d9/stateblock.c
index ad87335..8e3aa45 100644
--- a/dlls/d3d9/stateblock.c
+++ b/dlls/d3d9/stateblock.c
@@ -33,10 +33,11 @@ HRESULT WINAPI IDirect3DStateBlock9Impl_
         || IsEqualGUID(riid, &IID_IDirect3DStateBlock9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/surface.c b/dlls/d3d9/surface.c
index 6fb6daa..f04216e 100644
--- a/dlls/d3d9/surface.c
+++ b/dlls/d3d9/surface.c
@@ -33,10 +33,11 @@ HRESULT WINAPI IDirect3DSurface9Impl_Que
         || IsEqualGUID(riid, &IID_IDirect3DSurface9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/swapchain.c b/dlls/d3d9/swapchain.c
index 95c8096..5bcb480 100644
--- a/dlls/d3d9/swapchain.c
+++ b/dlls/d3d9/swapchain.c
@@ -34,10 +34,11 @@ HRESULT WINAPI IDirect3DSwapChain9Impl_Q
         || IsEqualGUID(riid, &IID_IDirect3DSwapChain9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/texture.c b/dlls/d3d9/texture.c
index 2ec3180..f7eca1d 100644
--- a/dlls/d3d9/texture.c
+++ b/dlls/d3d9/texture.c
@@ -35,10 +35,11 @@ HRESULT WINAPI IDirect3DTexture9Impl_Que
         || IsEqualGUID(riid, &IID_IDirect3DTexture9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p) not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/vertexbuffer.c b/dlls/d3d9/vertexbuffer.c
index 3fa47df..9567010 100644
--- a/dlls/d3d9/vertexbuffer.c
+++ b/dlls/d3d9/vertexbuffer.c
@@ -34,10 +34,11 @@ HRESULT WINAPI IDirect3DVertexBuffer9Imp
         || IsEqualGUID(riid, &IID_IDirect3DVertexBuffer9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/vertexdeclaration.c b/dlls/d3d9/vertexdeclaration.c
index f50e34b..c5fb323 100644
--- a/dlls/d3d9/vertexdeclaration.c
+++ b/dlls/d3d9/vertexdeclaration.c
@@ -32,10 +32,11 @@ HRESULT WINAPI IDirect3DVertexDeclaratio
         || IsEqualGUID(riid, &IID_IDirect3DVertexDeclaration9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/vertexshader.c b/dlls/d3d9/vertexshader.c
index ed3bc4d..2b74bd6 100644
--- a/dlls/d3d9/vertexshader.c
+++ b/dlls/d3d9/vertexshader.c
@@ -32,10 +32,11 @@ HRESULT WINAPI IDirect3DVertexShader9Imp
         || IsEqualGUID(riid, &IID_IDirect3DVertexShader9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/volume.c b/dlls/d3d9/volume.c
index bb1e490..3007c52 100644
--- a/dlls/d3d9/volume.c
+++ b/dlls/d3d9/volume.c
@@ -32,10 +32,11 @@ HRESULT WINAPI IDirect3DVolume9Impl_Quer
         || IsEqualGUID(riid, &IID_IDirect3DVolume9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 
diff --git a/dlls/d3d9/volumetexture.c b/dlls/d3d9/volumetexture.c
index 5b4d2f8..fe3a1f0 100644
--- a/dlls/d3d9/volumetexture.c
+++ b/dlls/d3d9/volumetexture.c
@@ -34,10 +34,11 @@ HRESULT WINAPI IDirect3DVolumeTexture9Im
     || IsEqualGUID(riid, &IID_IDirect3DVolumeTexture9)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
-        return D3D_OK;
+        return S_OK;
     }
 
     WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+    *ppobj = NULL;
     return E_NOINTERFACE;
 }
 


More information about the wine-patches mailing list