diff --git a/Terminal.Gui/ConsoleDrivers/AnsiEscapeSequence/AnsiEscapeSequenceRequest.cs b/Terminal.Gui/ConsoleDrivers/AnsiEscapeSequence/AnsiEscapeSequenceRequest.cs index 4c1636bf0..a820ce944 100644 --- a/Terminal.Gui/ConsoleDrivers/AnsiEscapeSequence/AnsiEscapeSequenceRequest.cs +++ b/Terminal.Gui/ConsoleDrivers/AnsiEscapeSequence/AnsiEscapeSequenceRequest.cs @@ -83,7 +83,12 @@ public class AnsiEscapeSequenceRequest throw new InvalidOperationException ("Terminator request is empty."); } - if (!ansiRequest.Response.EndsWith (ansiRequest.Terminator [^1])) + if (string.IsNullOrEmpty (ansiRequest.Response)) + { + throw new InvalidOperationException ("Response request is null."); + } + + if (!string.IsNullOrEmpty (ansiRequest.Response) && !ansiRequest.Response.EndsWith (ansiRequest.Terminator [^1])) { string resp = string.IsNullOrEmpty (ansiRequest.Response) ? "" : ansiRequest.Response.Last ().ToString (); diff --git a/Terminal.Gui/ConsoleDrivers/AnsiEscapeSequence/AnsiEscapeSequenceResponse.cs b/Terminal.Gui/ConsoleDrivers/AnsiEscapeSequence/AnsiEscapeSequenceResponse.cs index 2cc820801..9a5a2ec8d 100644 --- a/Terminal.Gui/ConsoleDrivers/AnsiEscapeSequence/AnsiEscapeSequenceResponse.cs +++ b/Terminal.Gui/ConsoleDrivers/AnsiEscapeSequence/AnsiEscapeSequenceResponse.cs @@ -24,7 +24,7 @@ public class AnsiEscapeSequenceResponse /// /// . /// - public required string Response { get; init; } + public required string? Response { get; init; } // QUESTION: Does string.Empty indicate no terminator expected? If not, perhaps make this property nullable? /// diff --git a/UICatalog/Scenarios/AnsiEscapeSequenceRequests.cs b/UICatalog/Scenarios/AnsiEscapeSequenceRequests.cs index f88c80820..62fd1ef60 100644 --- a/UICatalog/Scenarios/AnsiEscapeSequenceRequests.cs +++ b/UICatalog/Scenarios/AnsiEscapeSequenceRequests.cs @@ -172,7 +172,7 @@ public sealed class AnsiEscapeSequenceRequests : Scenario out AnsiEscapeSequenceResponse ansiEscapeSequenceResponse ); - tvResponse.Text = ansiEscapeSequenceResponse.Response; + tvResponse.Text = ansiEscapeSequenceResponse.Response ?? ""; tvError.Text = ansiEscapeSequenceResponse.Error; tvValue.Text = ansiEscapeSequenceResponse.ExpectedResponseValue ?? ""; tvTerminator.Text = ansiEscapeSequenceResponse.Terminator;