diff --git a/src/terminal/parser/stateMachine.cpp b/src/terminal/parser/stateMachine.cpp index fa2f86afd98..9ea8ff47c09 100644 --- a/src/terminal/parser/stateMachine.cpp +++ b/src/terminal/parser/stateMachine.cpp @@ -383,7 +383,10 @@ static constexpr bool _isActionableFromGround(const wchar_t wch) noexcept void StateMachine::_ActionExecute(const wchar_t wch) { _trace.TraceOnExecute(wch); - _engine->ActionExecute(wch); + const bool success = _engine->ActionExecute(wch); + + // Trace the result. + _trace.DispatchSequenceTrace(success); } // Routine Description: @@ -397,7 +400,11 @@ void StateMachine::_ActionExecute(const wchar_t wch) void StateMachine::_ActionExecuteFromEscape(const wchar_t wch) { _trace.TraceOnExecuteFromEscape(wch); - _engine->ActionExecuteFromEscape(wch); + + const bool success = _engine->ActionExecuteFromEscape(wch); + + // Trace the result. + _trace.DispatchSequenceTrace(success); } // Routine Description: @@ -409,7 +416,11 @@ void StateMachine::_ActionExecuteFromEscape(const wchar_t wch) void StateMachine::_ActionPrint(const wchar_t wch) { _trace.TraceOnAction(L"Print"); - _engine->ActionPrint(wch); + + const bool success = _engine->ActionPrint(wch); + + // Trace the result. + _trace.DispatchSequenceTrace(success); } // Routine Description: diff --git a/src/terminal/parser/tracing.cpp b/src/terminal/parser/tracing.cpp index 54f689017ea..727883e9bdf 100644 --- a/src/terminal/parser/tracing.cpp +++ b/src/terminal/parser/tracing.cpp @@ -76,7 +76,11 @@ void ParserTracing::TraceCharInput(const wchar_t wch) void ParserTracing::AddSequenceTrace(const wchar_t wch) { - _sequenceTrace.push_back(wch); + // Don't waste time storing this if no one is listening. + if (TraceLoggingProviderEnabled(g_hConsoleVirtTermParserEventTraceProvider, WINEVENT_LEVEL_VERBOSE, 0)) + { + _sequenceTrace.push_back(wch); + } } void ParserTracing::DispatchSequenceTrace(const bool fSuccess) noexcept