[NTUSER] Check IME-like after WNDS_DESTROYED check (#5005)

The guilty commit a2c6af0 enabled the IMM mode. So we have to take care of the default IME windows.
Using IS_WND_IMELIKE against WNDS_DESTROYED window was the cause of BSoD. CORE-18777
This commit is contained in:
Katayama Hirofumi MZ 2023-01-23 12:22:54 +09:00 committed by GitHub
parent 1321c802fc
commit d992c07239
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2953,7 +2953,7 @@ BOOLEAN co_UserDestroyWindow(PVOID Object)
* Check if this window is the Shell's Desktop Window. If so set hShellWindow to NULL
*/
if ((ti != NULL) && (ti->pDeskInfo != NULL))
if (ti->pDeskInfo != NULL)
{
if (ti->pDeskInfo->hShellWindow == hWnd)
{
@ -2987,9 +2987,10 @@ BOOLEAN co_UserDestroyWindow(PVOID Object)
/* Send destroy messages */
IntSendDestroyMsg(UserHMGetHandle(Window));
// Destroy the default IME window if necessary
/* Destroy the default IME window if necessary */
if (IS_IMM_MODE() && !(ti->TIF_flags & TIF_INCLEANUP) &&
ti->spwndDefaultIme && !IS_WND_IMELIKE(Window) && !(Window->state & WNDS_DESTROYED))
ti->spwndDefaultIme && (ti->spwndDefaultIme != Window) &&
!(Window->state & WNDS_DESTROYED) && !IS_WND_IMELIKE(Window))
{
if (IS_WND_CHILD(Window))
{