summaryrefslogtreecommitdiff
path: root/edk2/ShellPkg/Application
diff options
context:
space:
mode:
authorjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>2011-09-15 20:10:39 +0000
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>2011-09-15 20:10:39 +0000
commit39491d6e360d22260788fdcd0a2ec08a647049ed (patch)
tree4d3d09506e7367961a52a45ba55cb1c50152d48a /edk2/ShellPkg/Application
parent944cac68e7ca73eb12b6d686e0d2e0d578edb2fb (diff)
ShellPkg: Eliminate loss of high bits in return value from exit command on 64 bit platform.
submitted-by: jcarsey reviewed-by: gookboy15a reviewed-by: niruiyu git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk@12356 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'edk2/ShellPkg/Application')
-rw-r--r--edk2/ShellPkg/Application/Shell/Shell.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/edk2/ShellPkg/Application/Shell/Shell.c b/edk2/ShellPkg/Application/Shell/Shell.c
index 3a5899f34..614c1e959 100644
--- a/edk2/ShellPkg/Application/Shell/Shell.c
+++ b/edk2/ShellPkg/Application/Shell/Shell.c
@@ -475,6 +475,9 @@ UefiMain (
DEBUG_CODE(ShellInfoObject.ConsoleInfo = NULL;);
}
+ if (ShellCommandGetExit()) {
+ return ((EFI_STATUS)ShellCommandGetExitCode());
+ }
return (Status);
}
@@ -1622,6 +1625,7 @@ RunScriptFileHandle (
BOOLEAN PreCommandEchoState;
CONST CHAR16 *CurDir;
UINTN LineCount;
+ CHAR16 LeString[50];
ASSERT(!ShellCommandGetScriptExit());
@@ -1826,7 +1830,11 @@ RunScriptFileHandle (
}
if (ShellCommandGetScriptExit()) {
- ShellCommandRegisterExit(FALSE);
+ UnicodeSPrint(LeString, sizeof(LeString)*sizeof(LeString[0]), L"0x%Lx", ShellCommandGetExitCode());
+ DEBUG_CODE(InternalEfiShellSetEnv(L"DebugLasterror", LeString, TRUE););
+ InternalEfiShellSetEnv(L"Lasterror", LeString, TRUE);
+
+ ShellCommandRegisterExit(FALSE, 0);
Status = EFI_SUCCESS;
break;
}