Commit ea2613fe authored by Dmitry Timoshkov's avatar Dmitry Timoshkov Committed by Alexandre Julliard

user32: Make MDI get_client_info checks more strict.

parent 4d8f84cb
...@@ -202,13 +202,15 @@ static MDICLIENTINFO *get_client_info( HWND client ) ...@@ -202,13 +202,15 @@ static MDICLIENTINFO *get_client_info( HWND client )
WND *win = WIN_GetPtr( client ); WND *win = WIN_GetPtr( client );
if (win) if (win)
{ {
if (win == WND_OTHER_PROCESS) if (win == WND_OTHER_PROCESS || win == WND_DESKTOP)
{ {
if (IsWindow(client)) ERR( "client %p belongs to other process\n", client ); if (IsWindow(client)) WARN( "client %p belongs to other process\n", client );
return NULL; return NULL;
} }
if (win->cbWndExtra < sizeof(MDICLIENTINFO)) WARN( "%p is not an MDI client\n", client ); if (win->flags & WIN_ISMDICLIENT)
else ret = (MDICLIENTINFO *)win->wExtra; ret = (MDICLIENTINFO *)win->wExtra;
else
WARN( "%p is not an MDI client\n", client );
WIN_ReleasePtr( win ); WIN_ReleasePtr( win );
} }
return ret; return ret;
...@@ -1040,7 +1042,17 @@ static LRESULT MDIClientWndProc_common( HWND hwnd, UINT message, ...@@ -1040,7 +1042,17 @@ static LRESULT MDIClientWndProc_common( HWND hwnd, UINT message,
TRACE("%p %04x (%s) %08lx %08lx\n", hwnd, message, SPY_GetMsgName(message, hwnd), wParam, lParam); TRACE("%p %04x (%s) %08lx %08lx\n", hwnd, message, SPY_GetMsgName(message, hwnd), wParam, lParam);
if (!(ci = get_client_info( hwnd ))) return 0; if (!(ci = get_client_info( hwnd )))
{
if (message == WM_NCCREATE)
{
WND *wndPtr = WIN_GetPtr( hwnd );
wndPtr->flags |= WIN_ISMDICLIENT;
WIN_ReleasePtr( wndPtr );
}
return unicode ? DefWindowProcW( hwnd, message, wParam, lParam ) :
DefWindowProcA( hwnd, message, wParam, lParam );
}
switch (message) switch (message)
{ {
...@@ -1051,8 +1063,6 @@ static LRESULT MDIClientWndProc_common( HWND hwnd, UINT message, ...@@ -1051,8 +1063,6 @@ static LRESULT MDIClientWndProc_common( HWND hwnd, UINT message,
LPCREATESTRUCTA cs = (LPCREATESTRUCTA)lParam; LPCREATESTRUCTA cs = (LPCREATESTRUCTA)lParam;
WND *wndPtr = WIN_GetPtr( hwnd ); WND *wndPtr = WIN_GetPtr( hwnd );
wndPtr->flags |= WIN_ISMDICLIENT;
/* Translation layer doesn't know what's in the cs->lpCreateParams /* Translation layer doesn't know what's in the cs->lpCreateParams
* so we have to keep track of what environment we're in. */ * so we have to keep track of what environment we're in. */
......
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