Revision: 15841
          http://sourceforge.net/p/edk2/code/15841
Author:   jcarsey
Date:     2014-08-19 23:15:22 +0000 (Tue, 19 Aug 2014)
Log Message:
-----------
ShellPkg: Move mHandleParsingHiiHandle init out of the constructor

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chris Phillips <[email protected]>
Signed-off-by: Eugene Cohen <[email protected]>
Reviewed-by: Jaben Carsey <[email protected]>

Modified Paths:
--------------
    trunk/edk2/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c

Modified: 
trunk/edk2/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
===================================================================
--- trunk/edk2/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c     
2014-08-19 23:05:44 UTC (rev 15840)
+++ trunk/edk2/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c     
2014-08-19 23:15:22 UTC (rev 15841)
@@ -16,7 +16,7 @@
 #include "UefiHandleParsingLib.h"
 #include "IndustryStandard/Acpi10.h"
 
-EFI_HANDLE        mHandleParsingHiiHandle;
+EFI_HANDLE        mHandleParsingHiiHandle = NULL;
 HANDLE_INDEX_LIST mHandleList = {{{NULL,NULL},0,0},0};
 GUID_INFO_BLOCK   *GuidList;
 UINTN             GuidListCount;
@@ -102,12 +102,23 @@
   GuidListCount = 0;
   GuidList      = NULL;
 
-  mHandleParsingHiiHandle = HiiAddPackages (&gHandleParsingHiiGuid, 
gImageHandle, UefiHandleParsingLibStrings, NULL);
+  //
+  // Do nothing with mHandleParsingHiiHandle.  Initialize HII as needed.
+  //
+  return (EFI_SUCCESS);
+}
+
+/** 
+  Initialization function for HII packages.
+ 
+**/
+VOID
+HandleParsingHiiInit (VOID)
+{
   if (mHandleParsingHiiHandle == NULL) {
-    return (EFI_DEVICE_ERROR);
+    mHandleParsingHiiHandle = HiiAddPackages (&gHandleParsingHiiGuid, 
gImageHandle, UefiHandleParsingLibStrings, NULL);
+    ASSERT (mHandleParsingHiiHandle != NULL);
   }
-
-  return (EFI_SUCCESS);
 }
 
 /**
@@ -166,6 +177,8 @@
     return (CatSPrint(NULL, L"LoadedImage"));
   }
 
+  HandleParsingHiiInit();
+
   Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_LI_DUMP_MAIN), 
NULL);
   RetVal = AllocateZeroPool (PcdGet16 (PcdShellPrintBufferSize));
   if (Temp == NULL || RetVal == NULL) {
@@ -242,6 +255,8 @@
     return (CatSPrint(NULL, L"GraphicsOutput"));
   }
 
+  HandleParsingHiiInit();
+
   Temp = HiiGetString(mHandleParsingHiiHandle, 
STRING_TOKEN(STR_GOP_DUMP_MAIN), NULL);
   RetVal = AllocateZeroPool (PcdGet16 (PcdShellPrintBufferSize));
   if (Temp == NULL || RetVal == NULL) {
@@ -322,6 +337,8 @@
     return (CatSPrint(NULL, L"PciRootBridgeIo"));
   }
 
+  HandleParsingHiiInit();
+
   Status = gBS->HandleProtocol(
     TheHandle,
     &gEfiPciRootBridgeIoProtocolGuid,
@@ -445,6 +462,8 @@
     return (NULL);
   }
 
+  HandleParsingHiiInit();
+
   RetVal  = NULL;
   Size    = 0;
 
@@ -883,6 +902,8 @@
   CONST GUID_INFO_BLOCK *Temp;
   EFI_STRING_ID         NameID;
 
+  HandleParsingHiiInit();
+
   if (Guid == NULL || TheName == NULL){
     return (EFI_INVALID_PARAMETER);
   }
@@ -919,6 +940,8 @@
 {
   CONST GUID_INFO_BLOCK *Id;
 
+  HandleParsingHiiInit();
+
   Id = InternalShellGetNodeFromGuid(Guid);
   return (HiiGetString(mHandleParsingHiiHandle, 
Id==NULL?STRING_TOKEN(STR_UNKNOWN_DEVICE):Id->StringId, Lang));
 }
@@ -986,6 +1009,8 @@
   CHAR16                     *String;
   UINTN                  LoopCount;
 
+  HandleParsingHiiInit();
+
   ASSERT(Guid != NULL);
   if (Guid == NULL) {
     return (EFI_INVALID_PARAMETER);

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to