[PATCH] Stop crash when dd7 isnt installed
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Tue Jun 24 06:03:17 CDT 2008
---
dlls/ddraw/tests/dsurface.c | 69 +++++++++++++++++++++++++++++++------------
1 files changed, 50 insertions(+), 19 deletions(-)
diff --git a/dlls/ddraw/tests/dsurface.c b/dlls/ddraw/tests/dsurface.c
index 342b88a..7dcd7fe 100644
--- a/dlls/ddraw/tests/dsurface.c
+++ b/dlls/ddraw/tests/dsurface.c
@@ -707,7 +707,7 @@ static void GetDDInterface_1(void)
IDirectDraw2 *dd2;
IDirectDraw4 *dd4;
IDirectDraw7 *dd7;
- unsigned long ref1, ref2, ref4, ref7;
+ unsigned long ref1, ref2, ref4, ref7 = 0;
void *dd;
/* Create a surface */
@@ -737,8 +737,11 @@ static void GetDDInterface_1(void)
ok(ref2 == 1, "IDirectDraw2 refcount is %ld\n", ref2);
ref4 = getref((IUnknown *) dd4);
ok(ref4 == 1, "IDirectDraw4 refcount is %ld\n", ref4);
- ref7 = getref((IUnknown *) dd7);
- ok(ref7 == 1, "IDirectDraw7 refcount is %ld\n", ref7);
+ if(dd7)
+ {
+ ref7 = getref((IUnknown *) dd7);
+ ok(ref7 == 1, "IDirectDraw7 refcount is %ld\n", ref7);
+ }
ret = IDirectDrawSurface2_GetDDInterface(dsurface2, &dd);
@@ -746,7 +749,8 @@ static void GetDDInterface_1(void)
ok(getref((IUnknown *) lpDD) == ref1 + 1, "IDirectDraw refcount was increased by %ld\n", getref((IUnknown *) lpDD) - ref1);
ok(getref((IUnknown *) dd2) == ref2 + 0, "IDirectDraw2 refcount was increased by %ld\n", getref((IUnknown *) dd2) - ref2);
ok(getref((IUnknown *) dd4) == ref4 + 0, "IDirectDraw4 refcount was increased by %ld\n", getref((IUnknown *) dd4) - ref4);
- ok(getref((IUnknown *) dd7) == ref7 + 0, "IDirectDraw7 refcount was increased by %ld\n", getref((IUnknown *) dd7) - ref7);
+ if(dd7)
+ ok(getref((IUnknown *) dd7) == ref7 + 0, "IDirectDraw7 refcount was increased by %ld\n", getref((IUnknown *) dd7) - ref7);
ok(dd == lpDD, "Returned interface pointer is not equal to the creation interface\n");
IUnknown_Release((IUnknown *) dd);
@@ -757,7 +761,8 @@ static void GetDDInterface_1(void)
IDirectDraw_Release(dd2);
IDirectDraw_Release(dd4);
- IDirectDraw_Release(dd7);
+ if(dd7)
+ IDirectDraw_Release(dd7);
IDirectDrawSurface2_Release(dsurface2);
IDirectDrawSurface_Release(dsurface);
}
@@ -771,7 +776,7 @@ static void GetDDInterface_2(void)
IDirectDraw2 *dd2;
IDirectDraw4 *dd4;
IDirectDraw7 *dd7;
- unsigned long ref1, ref2, ref4, ref7;
+ unsigned long ref1, ref2, ref4, ref7 = 0;
void *dd;
ret = IDirectDraw_QueryInterface(lpDD, &IID_IDirectDraw2, (void **) &dd2);
@@ -802,8 +807,11 @@ static void GetDDInterface_2(void)
ok(ref2 == 1, "IDirectDraw2 refcount is %ld\n", ref2);
ref4 = getref((IUnknown *) dd4);
ok(ref4 == 1, "IDirectDraw4 refcount is %ld\n", ref4);
- ref7 = getref((IUnknown *) dd7);
- ok(ref7 == 1, "IDirectDraw7 refcount is %ld\n", ref7);
+ if(dd7)
+ {
+ ref7 = getref((IUnknown *) dd7);
+ ok(ref7 == 1, "IDirectDraw7 refcount is %ld\n", ref7);
+ }
ret = IDirectDrawSurface2_GetDDInterface(dsurface2, &dd);
@@ -811,14 +819,16 @@ static void GetDDInterface_2(void)
ok(getref((IUnknown *) lpDD) == ref1 + 0, "IDirectDraw refcount was increased by %ld\n", getref((IUnknown *) lpDD) - ref1);
ok(getref((IUnknown *) dd2) == ref2 + 1, "IDirectDraw2 refcount was increased by %ld\n", getref((IUnknown *) dd2) - ref2);
ok(getref((IUnknown *) dd4) == ref4 + 0, "IDirectDraw4 refcount was increased by %ld\n", getref((IUnknown *) dd4) - ref4);
- ok(getref((IUnknown *) dd7) == ref7 + 0, "IDirectDraw7 refcount was increased by %ld\n", getref((IUnknown *) dd7) - ref7);
+ if(dd7)
+ ok(getref((IUnknown *) dd7) == ref7 + 0, "IDirectDraw7 refcount was increased by %ld\n", getref((IUnknown *) dd7) - ref7);
ok(dd == dd2, "Returned interface pointer is not equal to the creation interface\n");
IUnknown_Release((IUnknown *) dd);
IDirectDraw_Release(dd2);
IDirectDraw_Release(dd4);
- IDirectDraw_Release(dd7);
+ if(dd7)
+ IDirectDraw_Release(dd7);
IDirectDrawSurface2_Release(dsurface2);
IDirectDrawSurface_Release(dsurface);
}
@@ -832,7 +842,7 @@ static void GetDDInterface_4(void)
IDirectDraw2 *dd2;
IDirectDraw4 *dd4;
IDirectDraw7 *dd7;
- unsigned long ref1, ref2, ref4, ref7;
+ unsigned long ref1, ref2, ref4, ref7 = 0;
void *dd;
ret = IDirectDraw_QueryInterface(lpDD, &IID_IDirectDraw2, (void **) &dd2);
@@ -863,15 +873,19 @@ static void GetDDInterface_4(void)
ok(ref2 == 1, "IDirectDraw2 refcount is %ld\n", ref2);
ref4 = getref((IUnknown *) dd4);
ok(ref4 == 2, "IDirectDraw4 refcount is %ld\n", ref4);
- ref7 = getref((IUnknown *) dd7);
- ok(ref7 == 1, "IDirectDraw7 refcount is %ld\n", ref7);
+ if(dd7)
+ {
+ ref7 = getref((IUnknown *) dd7);
+ ok(ref7 == 1, "IDirectDraw7 refcount is %ld\n", ref7);
+ }
ret = IDirectDrawSurface4_GetDDInterface(dsurface4, &dd);
ok(ret == DD_OK, "IDirectDrawSurface7_GetDDInterface returned %08x\n", ret);
ok(getref((IUnknown *) lpDD) == ref1 + 0, "IDirectDraw refcount was increased by %ld\n", getref((IUnknown *) lpDD) - ref1);
ok(getref((IUnknown *) dd2) == ref2 + 0, "IDirectDraw2 refcount was increased by %ld\n", getref((IUnknown *) dd2) - ref2);
ok(getref((IUnknown *) dd4) == ref4 + 1, "IDirectDraw4 refcount was increased by %ld\n", getref((IUnknown *) dd4) - ref4);
- ok(getref((IUnknown *) dd7) == ref7 + 0, "IDirectDraw7 refcount was increased by %ld\n", getref((IUnknown *) dd7) - ref7);
+ if(dd7)
+ ok(getref((IUnknown *) dd7) == ref7 + 0, "IDirectDraw7 refcount was increased by %ld\n", getref((IUnknown *) dd7) - ref7);
ok(dd == dd4, "Returned interface pointer is not equal to the creation interface\n");
IUnknown_Release((IUnknown *) dd);
@@ -882,14 +896,16 @@ static void GetDDInterface_4(void)
ok(getref((IUnknown *) lpDD) == ref1 + 0, "IDirectDraw refcount was increased by %ld\n", getref((IUnknown *) lpDD) - ref1);
ok(getref((IUnknown *) dd2) == ref2 + 0, "IDirectDraw2 refcount was increased by %ld\n", getref((IUnknown *) dd2) - ref2);
ok(getref((IUnknown *) dd4) == ref4 + 1, "IDirectDraw4 refcount was increased by %ld\n", getref((IUnknown *) dd4) - ref4);
- ok(getref((IUnknown *) dd7) == ref7 + 0, "IDirectDraw7 refcount was increased by %ld\n", getref((IUnknown *) dd7) - ref7);
+ if(dd7)
+ ok(getref((IUnknown *) dd7) == ref7 + 0, "IDirectDraw7 refcount was increased by %ld\n", getref((IUnknown *) dd7) - ref7);
ok(dd == dd4, "Returned interface pointer is not equal to the creation interface\n");
IUnknown_Release((IUnknown *) dd);
IDirectDraw_Release(dd2);
IDirectDraw_Release(dd4);
- IDirectDraw_Release(dd7);
+ if(dd7)
+ IDirectDraw_Release(dd7);
IDirectDrawSurface4_Release(dsurface4);
IDirectDrawSurface2_Release(dsurface2);
}
@@ -912,6 +928,8 @@ static void GetDDInterface_7(void)
ok(ret == DD_OK, "IDirectDraw7_QueryInterface returned %08x\n", ret);
ret = IDirectDraw_QueryInterface(lpDD, &IID_IDirectDraw7, (void **) &dd7);
ok(ret == DD_OK, "IDirectDraw7_QueryInterface returned %08x\n", ret);
+ if(ret != DD_OK)
+ goto cleanup;
/* Create a surface */
ZeroMemory(&surface, sizeof(surface));
@@ -958,11 +976,13 @@ static void GetDDInterface_7(void)
ok(dd == dd7, "Returned interface pointer is not equal to the creation interface\n");
IUnknown_Release((IUnknown *) dd);
- IDirectDraw_Release(dd2);
- IDirectDraw_Release(dd4);
IDirectDraw_Release(dd7);
IDirectDrawSurface4_Release(dsurface4);
IDirectDrawSurface7_Release(dsurface7);
+
+cleanup:
+ IDirectDraw_Release(dd2);
+ IDirectDraw_Release(dd4);
}
#define MAXEXPECTED 8 /* Can match up to 8 expected surfaces */
@@ -1044,6 +1064,8 @@ static void AttachmentTest7(void)
hr = IDirectDraw_QueryInterface(lpDD, &IID_IDirectDraw7, (void **) &dd7);
ok(hr == DD_OK, "IDirectDraw_QueryInterface returned %08x\n", hr);
+ if(hr != DD_OK)
+ return;
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
@@ -1502,6 +1524,8 @@ static void CubeMapTest(void)
hr = IDirectDraw_QueryInterface(lpDD, &IID_IDirectDraw7, (void **) &dd7);
ok(hr == DD_OK, "IDirectDraw::QueryInterface returned %08x\n", hr);
+ if(hr != DD_OK)
+ return;
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
@@ -1731,6 +1755,8 @@ static void CompressedTest(void)
hr = IDirectDraw_QueryInterface(lpDD, &IID_IDirectDraw7, (void **) &dd7);
ok(hr == DD_OK, "IDirectDraw::QueryInterface returned %08x\n", hr);
+ if(hr != DD_OK)
+ return;
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
@@ -2242,7 +2268,7 @@ static void PrivateDataTest(void)
}
hr = IDirectDrawSurface_QueryInterface(surface, &IID_IDirectDrawSurface7, (void **) &surface7);
ok(hr == DD_OK, "IDirectDrawSurface_QueryInterface failed with %08x\n", hr);
- if(!surface)
+ if(!surface7)
{
IDirectDrawSurface_Release(surface);
return;
@@ -2528,6 +2554,11 @@ static void StructSizeTest(void)
ok(hr == DD_OK, "Creating an offscreen plain surface failed with %08x\n", hr);
hr = IDirectDrawSurface_QueryInterface(surface1, &IID_IDirectDrawSurface7, (void **) &surface7);
ok(hr == DD_OK, "IDirectDrawSurface_QueryInterface failed with %08x\n", hr);
+ if(hr != DD_OK)
+ {
+ IDirectDrawSurface_Release(surface1);
+ return;
+ }
desc.desc1.dwSize = sizeof(DDSURFACEDESC);
hr = IDirectDrawSurface_GetSurfaceDesc(surface1, &desc.desc1);
--
1.5.4.1
--------------030303040909030907030802--
More information about the wine-patches
mailing list