[PATCH] DDraw: Reject IDirectDraw3 QI in ddraw.dll=0A=

Stefan Doesinger stefan at codeweavers.com
Tue Dec 16 20:56:41 CST 2008


=0A=
---=0A=
 dlls/ddraw/ddraw.c            |    7 +++++--=0A=
 dlls/ddraw/tests/ddrawmodes.c |   16 ++++++++++++++++=0A=
 2 files changed, 21 insertions(+), 2 deletions(-)=0A=
=0A=
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c=0A=
index 8033b15..3a77dcd 100644=0A=
--- a/dlls/ddraw/ddraw.c=0A=
+++ b/dlls/ddraw/ddraw.c=0A=
@@ -121,8 +121,11 @@ IDirectDrawImpl_QueryInterface(IDirectDraw7 *iface,=0A=
     }=0A=
     else if ( IsEqualGUID( &IID_IDirectDraw3, refiid ) )=0A=
     {=0A=
-        *obj =3D ICOM_INTERFACE(This, IDirectDraw3);=0A=
-        TRACE("(%p) Returning IDirectDraw3 interface at %p\n", This, =
*obj);=0A=
+        /* This Interface exists in ddrawex.dll, it is implemented in a =
wrapper */=0A=
+        WARN("IDirectDraw3 is not valid in ddraw.dll\n");=0A=
+        *obj =3D NULL;=0A=
+        LeaveCriticalSection(&ddraw_cs);=0A=
+        return E_NOINTERFACE;=0A=
     }=0A=
     else if ( IsEqualGUID( &IID_IDirectDraw2, refiid ) )=0A=
     {=0A=
diff --git a/dlls/ddraw/tests/ddrawmodes.c =
b/dlls/ddraw/tests/ddrawmodes.c=0A=
index d21c3b4..67dd9d4 100644=0A=
--- a/dlls/ddraw/tests/ddrawmodes.c=0A=
+++ b/dlls/ddraw/tests/ddrawmodes.c=0A=
@@ -385,6 +385,21 @@ static void testcooperativelevels_exclusive(void)=0A=
     /* All done */=0A=
 }=0A=
 =0A=
+static void testddraw3(void)=0A=
+{=0A=
+    const GUID My_IID_IDirectDraw3 =3D {=0A=
+        0x618f8ad4,=0A=
+        0x8b7a,=0A=
+        0x11d0,=0A=
+        { 0x8f,0xcc,0x0,0xc0,0x4f,0xd9,0x18,0x9d }=0A=
+    };=0A=
+    IDirectDraw3 *dd3;=0A=
+    HRESULT hr;=0A=
+    hr =3D IDirectDraw_QueryInterface(lpDD, &My_IID_IDirectDraw3, (void =
**) &dd3);=0A=
+    ok(hr =3D=3D E_NOINTERFACE, "QueryInterface for IID_IDirectDraw3 =
returned 0x%08x, expected E_NOINTERFACE\n", hr);=0A=
+    if(SUCCEEDED(hr) && dd3) IDirectDraw3_Release(dd3);=0A=
+}=0A=
+=0A=
 START_TEST(ddrawmodes)=0A=
 {=0A=
     createwindow();=0A=
@@ -394,6 +409,7 @@ START_TEST(ddrawmodes)=0A=
     if (winetest_interactive)=0A=
         testdisplaymodes();=0A=
     flushdisplaymodes();=0A=
+    testddraw3();=0A=
     releasedirectdraw();=0A=
 =0A=
     createdirectdraw();=0A=
-- =0A=
1.6.0.6=0A=
=0A=

------=_NextPart_000_0009_01C96C80.4B859870--




More information about the wine-patches mailing list