From 0c83ac57f5c236a70766673ada65fff6b78596d6 Mon Sep 17 00:00:00 2001 From: Ruiyu Ni Date: Tue, 28 Nov 2017 17:06:32 +0800 Subject: [PATCH] ShellPkg: Fix the bug that handling Ctrl-C improperly Current implementation resets the CTRL-C event early when printing the shell prompt, when user types "ls", "ls" command is terminated immediately when starts. It's not an expected behavior from users' perspective. Correct way is to reset the CTRL-C event just before running the command, which is a bit later than current point. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ruiyu Ni Reviewed-by: Jaben Carsey --- ShellPkg/Application/Shell/Shell.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ShellPkg/Application/Shell/Shell.c b/ShellPkg/Application/Shell/Shell.c index 2adc99240c..577e17311b 100644 --- a/ShellPkg/Application/Shell/Shell.c +++ b/ShellPkg/Application/Shell/Shell.c @@ -620,11 +620,6 @@ UefiMain ( ShellInfoObject.ConsoleInfo->Enabled = TRUE; ShellInfoObject.ConsoleInfo->RowCounter = 0; - // - // Reset the CTRL-C event (yes we ignore the return values) - // - Status = gBS->CheckEvent (ShellInfoObject.NewEfiShellProtocol->ExecutionBreak); - // // Display Prompt // @@ -1346,9 +1341,14 @@ DoShellPrompt ( // Null terminate the string and parse it // if (!EFI_ERROR (Status)) { + // + // Reset the CTRL-C event just before running the command (yes we ignore the return values) + // + Status = gBS->CheckEvent (ShellInfoObject.NewEfiShellProtocol->ExecutionBreak); + CmdLine[BufferSize / sizeof (CHAR16)] = CHAR_NULL; Status = RunCommand(CmdLine); - } + } // // Done with this command