Commit 2c2e3f86 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

user32: Verify we got a valid window handle in GetDCEx().

parent 9d865274
......@@ -908,6 +908,8 @@ HDC WINAPI GetDCEx( HWND hwnd, HRGN hrgnClip, DWORD flags )
TRACE("hwnd %p, hrgnClip %p, flags %08x\n", hwnd, hrgnClip, flags);
if (!IsWindow(hwnd)) return 0;
/* fixup flags */
if (flags & (DCX_WINDOW | DCX_PARENTCLIP)) flags |= DCX_CACHE;
......
......@@ -392,6 +392,23 @@ static void test_invisible_create(void)
DestroyWindow(hwnd_owndc);
}
static void test_destroyed_window(void)
{
HDC dc;
dc = GetDCEx(hwnd_cache, 0, DCX_USESTYLE);
ok(!dc, "Got a non-NULL DC (%p) for a destroyed window.\n", dc);
dc = GetDCEx(hwnd_owndc, 0, DCX_USESTYLE);
ok(!dc, "Got a non-NULL DC (%p) for a destroyed window.\n", dc);
dc = GetDCEx(hwnd_classdc, 0, DCX_USESTYLE);
ok(!dc, "Got a non-NULL DC (%p) for a destroyed window.\n", dc);
dc = GetDCEx(hwnd_classdc2, 0, DCX_USESTYLE);
ok(!dc, "Got a non-NULL DC (%p) for a destroyed window.\n", dc);
}
START_TEST(dce)
{
WNDCLASSA cls;
......@@ -431,4 +448,11 @@ START_TEST(dce)
test_dc_visrgn();
test_begin_paint();
test_invisible_create();
DestroyWindow(hwnd_classdc2);
DestroyWindow(hwnd_classdc);
DestroyWindow(hwnd_owndc);
DestroyWindow(hwnd_cache);
test_destroyed_window();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment