diff --git a/controls/combo.c b/controls/combo.c index 9d8ba698ac1..68108a95313 100644 --- a/controls/combo.c +++ b/controls/combo.c @@ -1730,7 +1730,7 @@ LRESULT WINAPI ComboWndProc( HWND hwnd, UINT message, goto END; case WM_WINDOWPOSCHANGING: retvalue = COMBO_WindowPosChanging(hwnd, lphc, (LPWINDOWPOS)lParam); - return retvalue; + goto END; case WM_SIZE: if( lphc->hWndLBox && !(lphc->wState & CBF_NORESIZE) ) COMBO_Size( lphc ); diff --git a/windows/class.c b/windows/class.c index 6f7f645b988..031ba67d455 100644 --- a/windows/class.c +++ b/windows/class.c @@ -723,6 +723,7 @@ WORD WINAPI GetClassWord16( HWND16 hwnd, INT16 offset ) WORD WINAPI GetClassWord( HWND hwnd, INT offset ) { WND * wndPtr; + WORD retvalue = 0; TRACE(class,"%x %x\n",hwnd, offset); @@ -731,29 +732,33 @@ WORD WINAPI GetClassWord( HWND hwnd, INT offset ) { if (offset <= wndPtr->class->cbClsExtra - sizeof(WORD)) { - WORD retvalue = GET_WORD(((char *)wndPtr->class->wExtra) + offset); - WIN_ReleaseWndPtr(wndPtr); - return retvalue; + retvalue = GET_WORD(((char *)wndPtr->class->wExtra) + offset); + goto END; } } else switch(offset) { - case GCW_HBRBACKGROUND: return wndPtr->class->hbrBackground; - case GCW_HCURSOR: return wndPtr->class->hCursor; - case GCW_HICON: return wndPtr->class->hIcon; - case GCW_HICONSM: return wndPtr->class->hIconSm; - case GCW_ATOM: return wndPtr->class->atomName; + case GCW_HBRBACKGROUND: retvalue = wndPtr->class->hbrBackground; + goto END; + case GCW_HCURSOR: retvalue = wndPtr->class->hCursor; + goto END; + case GCW_HICON: retvalue = wndPtr->class->hIcon; + goto END; + case GCW_HICONSM: retvalue = wndPtr->class->hIconSm; + goto END; + case GCW_ATOM: retvalue = wndPtr->class->atomName; + goto END; case GCW_STYLE: case GCW_CBWNDEXTRA: case GCW_CBCLSEXTRA: case GCW_HMODULE: - WIN_ReleaseWndPtr(wndPtr); - return (WORD)GetClassLongA( hwnd, offset ); + retvalue = (WORD)GetClassLongA( hwnd, offset ); } - WIN_ReleaseWndPtr(wndPtr); WARN(class, "Invalid offset %d\n", offset); - return 0; + END: + WIN_ReleaseWndPtr(wndPtr); + return retvalue; } diff --git a/windows/dce.c b/windows/dce.c index 7f40bf757ed..aba47dff564 100644 --- a/windows/dce.c +++ b/windows/dce.c @@ -1015,6 +1015,7 @@ BOOL16 WINAPI DCHook16( HDC16 hDC, WORD code, DWORD data, LPARAM lParam ) DCE_OffsetVisRgn( hDC, hVisRgn ); SelectVisRgn16(hDC, hVisRgn); DeleteObject( hVisRgn ); + WIN_ReleaseWndPtr( wndPtr ); /* Release WIN_FindWndPtr lock */ } else /* non-fatal but shouldn't happen */ WARN(dc, "DC is not in use!\n");