diff --git a/src/cascadia/TerminalApp/TerminalPage.cpp b/src/cascadia/TerminalApp/TerminalPage.cpp index 3a82a05aebf..ca86bb80a37 100644 --- a/src/cascadia/TerminalApp/TerminalPage.cpp +++ b/src/cascadia/TerminalApp/TerminalPage.cpp @@ -1899,7 +1899,10 @@ namespace winrt::TerminalApp::implementation void TerminalPage::PersistState() { - if (_startupState != StartupState::Initialized) + // This method may be called for a window even if it hasn't had a tab yet or lost all of them. + // We shouldn't persist such windows. + const auto tabCount = _tabs.Size(); + if (_startupState != StartupState::Initialized || tabCount == 0) { return; } @@ -1915,7 +1918,7 @@ namespace winrt::TerminalApp::implementation // if the focused tab was not the last tab, restore that auto idx = _GetFocusedTabIndex(); - if (idx && idx != _tabs.Size() - 1) + if (idx && idx != tabCount - 1) { ActionAndArgs action; action.Action(ShortcutAction::SwitchToTab); diff --git a/src/cascadia/TerminalConnection/ConptyConnection.cpp b/src/cascadia/TerminalConnection/ConptyConnection.cpp index dd85388263b..7d326ea65c1 100644 --- a/src/cascadia/TerminalConnection/ConptyConnection.cpp +++ b/src/cascadia/TerminalConnection/ConptyConnection.cpp @@ -180,12 +180,14 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation const HANDLE hRef, const HANDLE hServerProcess, const HANDLE hClientProcess, - TERMINAL_STARTUP_INFO startupInfo) : + const TERMINAL_STARTUP_INFO& startupInfo) : _rows{ 25 }, _cols{ 80 }, _inPipe{ hIn }, _outPipe{ hOut } { + _sessionId = Utils::CreateGuid(); + THROW_IF_FAILED(ConptyPackPseudoConsole(hServerProcess, hRef, hSig, &_hPC)); _piClient.hProcess = hClientProcess; diff --git a/src/cascadia/TerminalConnection/ConptyConnection.h b/src/cascadia/TerminalConnection/ConptyConnection.h index e1b47bee64e..246621c5eeb 100644 --- a/src/cascadia/TerminalConnection/ConptyConnection.h +++ b/src/cascadia/TerminalConnection/ConptyConnection.h @@ -19,7 +19,7 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation const HANDLE hRef, const HANDLE hServerProcess, const HANDLE hClientProcess, - TERMINAL_STARTUP_INFO startupInfo); + const TERMINAL_STARTUP_INFO& startupInfo); ConptyConnection() noexcept = default; void Initialize(const Windows::Foundation::Collections::ValueSet& settings);