mirror of
https://github.com/microsoft/terminal.git
synced 2025-12-12 00:07:24 -06:00
Guard IslandWindow shutdown against exploding?
During shutdown (specifically from the right-click menu in the terminal) XAML would throw an exception that we traced back to resetting the content of the Island. ``` Exception thrown at 0x00007FF95E72B5EC (KernelBase.dll) in WindowsTerminal.exe: WinRT originate error - 0x800F1000 : 'Child collection must not be modified during measure or arrange.'. ``` This made it out into the catch around the window message handler and resulted in the window not being closed after being emptied out. Closes #19312
This commit is contained in:
parent
f6303ac1ae
commit
2d746ebae0
@ -102,7 +102,15 @@ void IslandWindow::Close()
|
|||||||
// WinUI will strongly hold onto the first DesktopWindowXamlSource that is created.
|
// WinUI will strongly hold onto the first DesktopWindowXamlSource that is created.
|
||||||
// If we don't manually set the Content() to null first, closing that first window
|
// If we don't manually set the Content() to null first, closing that first window
|
||||||
// will leak all of its contents permanently.
|
// will leak all of its contents permanently.
|
||||||
_source.Content(nullptr);
|
//
|
||||||
|
// However, sometimes resetting the content during showdown throws an exception.
|
||||||
|
// We want to continue shutting down, even if this failed (and just leak the
|
||||||
|
// content if that's what it is going to do.)
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_source.Content(nullptr);
|
||||||
|
}
|
||||||
|
CATCH_LOG();
|
||||||
|
|
||||||
_source.Close();
|
_source.Close();
|
||||||
_source = nullptr;
|
_source = nullptr;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user