]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Application/Shell/Shell.c
Add initializing code for local variable 'CalleeExitStatus' and 'ExitStatus' in ...
[mirror_edk2.git] / ShellPkg / Application / Shell / Shell.c
index e56b3f83630b60c50a3adf34fb07e2ff7529e8ae..18055d5a85adb57f0cd9ca31c5f925abe70ca9e3 100644 (file)
@@ -300,6 +300,12 @@ UefiMain (
   // install our console logger.  This will keep a log of the output for back-browsing\r
   //\r
   Status = ConsoleLoggerInstall(ShellInfoObject.LogScreenCount, &ShellInfoObject.ConsoleInfo);\r
+  if(EFI_ERROR (Status)) {\r
+    ExitStatus = (SHELL_STATUS) (Status & (~MAX_BIT));\r
+  } else {\r
+    ExitStatus = SHELL_SUCCESS;\r
+  }\r
+       \r
   if (!EFI_ERROR(Status)) {\r
     //\r
     // Enable the cursor to be visible\r
@@ -2074,6 +2080,7 @@ RunCommandOrFile(
   Status            = EFI_SUCCESS;\r
   CommandWithPath   = NULL;\r
   DevPath           = NULL;\r
+  CalleeExitStatus  = SHELL_INVALID_PARAMETER;\r
 \r
   switch (Type) {\r
     case   Internal_Command:\r
@@ -2149,11 +2156,17 @@ RunCommandOrFile(
 \r
           SHELL_FREE_NON_NULL(DevPath);\r
 \r
+          if(EFI_ERROR (Status)) {\r
+            CalleeExitStatus = (SHELL_STATUS) (Status & (~MAX_BIT));\r
+          } else {\r
+            CalleeExitStatus = SHELL_SUCCESS;\r
+          }\r
+\r
           //\r
           // Update last error status.\r
           //\r
           // Status is an EFI_STATUS. Clear top bit to convert to SHELL_STATUS\r
-          SetLastError((SHELL_STATUS) (Status & (~MAX_BIT)));\r
+          SetLastError(CalleeExitStatus);\r
           break;\r
         default:\r
           //\r
@@ -2412,9 +2425,11 @@ RunScriptFileHandle (
   CONST CHAR16        *CurDir;\r
   UINTN               LineCount;\r
   CHAR16              LeString[50];\r
-  SHELL_STATUS        CalleeExitStatus = SHELL_SUCCESS;\r
+  SHELL_STATUS        CalleeExitStatus;\r
 \r
   ASSERT(!ShellCommandGetScriptExit());\r
+  \r
+  CalleeExitStatus = SHELL_SUCCESS;\r
 \r
   PreScriptEchoState = ShellCommandGetEchoState();\r
 \r