[PATCH 1/5] ddraw/tests: Don't leak overlay if DWM cannot be disabled.

Stefan Dösinger stefan at codeweavers.com
Thu Jan 23 03:45:39 CST 2020


This fixes test_caps on my GeForce 650M Windows 10 machine.

Signed-off-by: Stefan Dösinger <stefan at codeweavers.com>

---

There's a deeper problem with test_caps() though - that this leak causes
it to fail is just a symptom. ddraw reports different caps after creating
a surface, presumably because some internal plugins get loaded. So the
results of test_caps() are potentially misleading.
---
 dlls/ddraw/tests/ddraw1.c | 3 ++-
 dlls/ddraw/tests/ddraw2.c | 3 ++-
 dlls/ddraw/tests/ddraw4.c | 3 ++-
 dlls/ddraw/tests/ddraw7.c | 3 ++-
 4 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index c10be66236a..26dd8140e4c 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -9478,10 +9478,11 @@ static void test_overlay_rect(void)
     ok(!pos_x, "Got unexpected pos_x %d.\n", pos_x);
     ok(!pos_y, "Got unexpected pos_y %d.\n", pos_y);
 
-    IDirectDrawSurface_Release(overlay);
 done:
     if (primary)
         IDirectDrawSurface_Release(primary);
+    if (overlay)
+        IDirectDrawSurface_Release(overlay);
     IDirectDraw_Release(ddraw);
     DestroyWindow(window);
 }
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 8d4d44863a1..8e37243e6c1 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -10180,10 +10180,11 @@ static void test_overlay_rect(void)
     ok(!pos_x, "Got unexpected pos_x %d.\n", pos_x);
     ok(!pos_y, "Got unexpected pos_y %d.\n", pos_y);
 
-    IDirectDrawSurface_Release(overlay);
 done:
     if (primary)
         IDirectDrawSurface_Release(primary);
+    if (overlay)
+        IDirectDrawSurface_Release(overlay);
     IDirectDraw2_Release(ddraw);
     DestroyWindow(window);
 }
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index 1a16e2d571e..b6dbd63c885 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -12058,10 +12058,11 @@ static void test_overlay_rect(void)
     ok(!pos_x, "Got unexpected pos_x %d.\n", pos_x);
     ok(!pos_y, "Got unexpected pos_y %d.\n", pos_y);
 
-    IDirectDrawSurface4_Release(overlay);
 done:
     if (primary)
         IDirectDrawSurface4_Release(primary);
+    if (overlay)
+        IDirectDrawSurface4_Release(overlay);
     IDirectDraw4_Release(ddraw);
     DestroyWindow(window);
 }
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 20a1bc5f3af..be6aca2cec9 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -12049,10 +12049,11 @@ static void test_overlay_rect(void)
     ok(!pos_x, "Got unexpected pos_x %d.\n", pos_x);
     ok(!pos_y, "Got unexpected pos_y %d.\n", pos_y);
 
-    IDirectDrawSurface7_Release(overlay);
 done:
     if (primary)
         IDirectDrawSurface7_Release(primary);
+    if (overlay)
+        IDirectDrawSurface7_Release(overlay);
     IDirectDraw7_Release(ddraw);
     DestroyWindow(window);
 }
-- 
2.24.1




More information about the wine-devel mailing list