From ced4381ebfeff8ee7e3d91aed23acc6e0d11d67b Mon Sep 17 00:00:00 2001 From: khvitaly Date: Fri, 5 Mar 2021 21:54:00 +0200 Subject: [PATCH 1/2] Fix TermControl initialization to pre-seed working dir --- src/cascadia/TerminalControl/TermControl.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/cascadia/TerminalControl/TermControl.cpp b/src/cascadia/TerminalControl/TermControl.cpp index 041f9393802..4a38aaadb44 100644 --- a/src/cascadia/TerminalControl/TermControl.cpp +++ b/src/cascadia/TerminalControl/TermControl.cpp @@ -123,6 +123,9 @@ namespace winrt::Microsoft::Terminal::TerminalControl::implementation _terminal->UpdateSettings(settings); + // GH#8969: pre-seed working directory to prevent potential races + _terminal->SetWorkingDirectory(_settings.StartingDirectory()); + // Subscribe to the connection's disconnected event and call our connection closed handlers. _connectionStateChangedRevoker = _connection.StateChanged(winrt::auto_revoke, [this](auto&& /*s*/, auto&& /*v*/) { _ConnectionStateChangedHandlers(*this, nullptr); From cfed93de8f956409075fe88052fba7dba1a5016a Mon Sep 17 00:00:00 2001 From: khvitaly Date: Fri, 5 Mar 2021 22:05:47 +0200 Subject: [PATCH 2/2] Move the working directory initialization to the very beginning --- src/cascadia/TerminalControl/TermControl.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cascadia/TerminalControl/TermControl.cpp b/src/cascadia/TerminalControl/TermControl.cpp index 4a38aaadb44..a63d29869dc 100644 --- a/src/cascadia/TerminalControl/TermControl.cpp +++ b/src/cascadia/TerminalControl/TermControl.cpp @@ -87,6 +87,9 @@ namespace winrt::Microsoft::Terminal::TerminalControl::implementation _terminal = std::make_unique<::Microsoft::Terminal::Core::Terminal>(); + // GH#8969: pre-seed working directory to prevent potential races + _terminal->SetWorkingDirectory(_settings.StartingDirectory()); + auto pfnWarningBell = std::bind(&TermControl::_TerminalWarningBell, this); _terminal->SetWarningBellCallback(pfnWarningBell); @@ -123,9 +126,6 @@ namespace winrt::Microsoft::Terminal::TerminalControl::implementation _terminal->UpdateSettings(settings); - // GH#8969: pre-seed working directory to prevent potential races - _terminal->SetWorkingDirectory(_settings.StartingDirectory()); - // Subscribe to the connection's disconnected event and call our connection closed handlers. _connectionStateChangedRevoker = _connection.StateChanged(winrt::auto_revoke, [this](auto&& /*s*/, auto&& /*v*/) { _ConnectionStateChangedHandlers(*this, nullptr);