Check for passed invalid window handle in DefMDIChildProc*.
diff --git a/windows/mdi.c b/windows/mdi.c
index ed2d49d..b67ada1 100644
--- a/windows/mdi.c
+++ b/windows/mdi.c
@@ -1483,8 +1483,11 @@
WND *clientWnd,*tmpWnd = 0;
LRESULT retvalue;
- clientWnd = WIN_FindWndPtr(GetParent16(hwnd));
+ tmpWnd = WIN_FindWndPtr(hwnd);
+ if (!tmpWnd) return 0;
+ clientWnd = WIN_FindWndPtr(tmpWnd->parent->hwndSelf);
ci = (MDICLIENTINFO *) clientWnd->wExtra;
+ WIN_ReleaseWndPtr(tmpWnd);
switch (message)
{
@@ -1666,6 +1669,7 @@
LRESULT retvalue;
tmpWnd = WIN_FindWndPtr(hwnd);
+ if (!tmpWnd) return 0;
clientWnd = WIN_FindWndPtr(tmpWnd->parent->hwndSelf);
ci = (MDICLIENTINFO *) clientWnd->wExtra;
WIN_ReleaseWndPtr(tmpWnd);
@@ -1731,11 +1735,14 @@
WPARAM wParam, LPARAM lParam )
{
MDICLIENTINFO *ci;
- WND *clientWnd;
+ WND *clientWnd,*tmpWnd;
LRESULT retvalue;
- clientWnd = WIN_FindWndPtr(GetParent16(hwnd));
+ tmpWnd = WIN_FindWndPtr(hwnd);
+ if (!tmpWnd) return 0;
+ clientWnd = WIN_FindWndPtr(tmpWnd->parent->hwndSelf);
ci = (MDICLIENTINFO *) clientWnd->wExtra;
+ WIN_ReleaseWndPtr(tmpWnd);
switch (message)
{