Made access to the wnd struct thread-safe.
diff --git a/windows/winproc.c b/windows/winproc.c
index d26886c..2541d22 100644
--- a/windows/winproc.c
+++ b/windows/winproc.c
@@ -391,9 +391,13 @@
* Return TRUE if the lparam is a string
*/
BOOL WINPROC_TestCBForStr ( HWND hwnd )
-{ WND * wnd = WIN_FindWndPtr(hwnd);
- return ( !(LOWORD(wnd->dwStyle) & (CBS_OWNERDRAWFIXED | CBS_OWNERDRAWVARIABLE)) ||
+{
+ BOOL retvalue;
+ WND * wnd = WIN_FindWndPtr(hwnd);
+ retvalue = ( !(LOWORD(wnd->dwStyle) & (CBS_OWNERDRAWFIXED | CBS_OWNERDRAWVARIABLE)) ||
(LOWORD(wnd->dwStyle) & CBS_HASSTRINGS) );
+ WIN_ReleaseWndPtr(wnd);
+ return retvalue;
}
/**********************************************************************
* WINPROC_TestLBForStr
@@ -401,9 +405,14 @@
* Return TRUE if the lparam is a string
*/
BOOL WINPROC_TestLBForStr ( HWND hwnd )
-{ WND * wnd = WIN_FindWndPtr(hwnd);
- return ( !(LOWORD(wnd->dwStyle) & (LBS_OWNERDRAWFIXED | LBS_OWNERDRAWVARIABLE)) ||
+{
+ BOOL retvalue;
+ WND * wnd = WIN_FindWndPtr(hwnd);
+ retvalue = ( !(LOWORD(wnd->dwStyle) & (LBS_OWNERDRAWFIXED | LBS_OWNERDRAWVARIABLE)) ||
(LOWORD(wnd->dwStyle) & LBS_HASSTRINGS) );
+ WIN_ReleaseWndPtr(wnd);
+ return retvalue;
+
}
/**********************************************************************
* WINPROC_MapMsg32ATo32W
@@ -1681,8 +1690,10 @@
*plparam = MAKELPARAM( HIWORD(wParam32), (HMENU16)*plparam );
return 0;
case WM_MDIACTIVATE:
- if( WIDGETS_IsControl(WIN_FindWndPtr(hwnd), BIC32_MDICLIENT) )
{
+ WND *tempWnd = WIN_FindWndPtr(hwnd);
+ if( WIDGETS_IsControl(tempWnd, BIC32_MDICLIENT) )
+ {
*pwparam16 = (HWND)wParam32;
*plparam = 0;
}
@@ -1692,6 +1703,8 @@
*plparam = MAKELPARAM( (HWND16)LOWORD(*plparam),
(HWND16)LOWORD(wParam32) );
}
+ WIN_ReleaseWndPtr(tempWnd);
+ }
return 0;
case WM_NCCALCSIZE:
{