diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2020-10-20 18:43:51 +0300 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2020-10-20 18:43:51 +0300 | 
| commit | 3ebf3b7182fa0af6262e20d83133825889c6cc7b (patch) | |
| tree | beef1ef932556d0dc65d9a356e83b7934e424aa4 | |
| parent | 7bdaeca0195a66379de0229a60543f7d691edad4 (diff) | |
SL-13733 Verify window handle
| -rw-r--r-- | indra/llwindow/llwindowwin32.cpp | 26 | 
1 files changed, 17 insertions, 9 deletions
| diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 180954f715..bef0ae76a8 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -829,16 +829,24 @@ void LLWindowWin32::close()  	LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL; -	// Make sure we don't leave a blank toolbar button. -	ShowWindow(mWindowHandle, SW_HIDE); +    if (IsWindow(mWindowHandle)) +    { +        // Make sure we don't leave a blank toolbar button. +        ShowWindow(mWindowHandle, SW_HIDE); -	// This causes WM_DESTROY to be sent *immediately* -	if (!destroy_window_handler(mWindowHandle)) -	{ -		OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"), -			mCallbacks->translateString("MBShutdownErr"), -			OSMB_OK); -	} +        // This causes WM_DESTROY to be sent *immediately* +        if (!destroy_window_handler(mWindowHandle)) +        { +            OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"), +                mCallbacks->translateString("MBShutdownErr"), +                OSMB_OK); +        } +    } +    else +    { +        // Something killed the window while we were busy destroying gl or handle somehow got broken +        LL_WARNS("Window") << "Failed to destroy Window, invalid handle!" << LL_ENDL; +    }  	mWindowHandle = NULL;  } | 
