summaryrefslogtreecommitdiffstats
path: root/ShellPkg/Library/UefiShellLib/UefiShellLib.c
diff options
context:
space:
mode:
authorTapan Shah <tapandshah@hpe.com>2016-10-05 13:58:05 -0700
committerJaben Carsey <jaben.carsey@intel.com>2016-10-05 15:19:40 -0700
commit2cf9ecd2262e4098171fa27c97b56d483f5cf3b4 (patch)
treef9074132a50a8bbb3702d4c8df62177f10c14ad2 /ShellPkg/Library/UefiShellLib/UefiShellLib.c
parentc0b7e2b2bfc2748112607bfe83fc99cf48c97b48 (diff)
downloadedk2-2cf9ecd2262e4098171fa27c97b56d483f5cf3b4.tar.gz
edk2-2cf9ecd2262e4098171fa27c97b56d483f5cf3b4.tar.bz2
edk2-2cf9ecd2262e4098171fa27c97b56d483f5cf3b4.zip
ShellPkg: Move UnicodeCollation2 Protcol locate out of UefiShellLib constructor
Move gEfiUnicodeCollation2ProtocolGuid protocol outside of UefiShellLib constructor function. Locate gEfiUnicodeCollation2ProtocolGuid protocol in ShellOpenFileByName() which consumes this protocol API. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Tapan Shah <tapandshah@hpe.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
Diffstat (limited to 'ShellPkg/Library/UefiShellLib/UefiShellLib.c')
-rw-r--r--ShellPkg/Library/UefiShellLib/UefiShellLib.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/ShellPkg/Library/UefiShellLib/UefiShellLib.c b/ShellPkg/Library/UefiShellLib/UefiShellLib.c
index e47d5350e0..53f54e1746 100644
--- a/ShellPkg/Library/UefiShellLib/UefiShellLib.c
+++ b/ShellPkg/Library/UefiShellLib/UefiShellLib.c
@@ -292,18 +292,12 @@ ShellLibConstructor (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
- EFI_STATUS Status;
-
mEfiShellEnvironment2 = NULL;
gEfiShellProtocol = NULL;
gEfiShellParametersProtocol = NULL;
mEfiShellInterface = NULL;
mEfiShellEnvironment2Handle = NULL;
-
- if (mUnicodeCollationProtocol == NULL) {
- Status = gBS->LocateProtocol (&gEfiUnicodeCollation2ProtocolGuid, NULL, (VOID**)&mUnicodeCollationProtocol);
- ASSERT_EFI_ERROR (Status);
- }
+ mUnicodeCollationProtocol = NULL;
//
// verify that auto initialize is not set false
@@ -730,6 +724,14 @@ ShellOpenFileByName(
FileHandle,
OpenMode);
+ if (mUnicodeCollationProtocol == NULL) {
+ Status = gBS->LocateProtocol (&gEfiUnicodeCollation2ProtocolGuid, NULL, (VOID**)&mUnicodeCollationProtocol);
+ if (EFI_ERROR (Status)) {
+ gEfiShellProtocol->CloseFile (*FileHandle);
+ return Status;
+ }
+ }
+
if ((mUnicodeCollationProtocol->StriColl (mUnicodeCollationProtocol, (CHAR16*)FileName, L"NUL") != 0) &&
(mUnicodeCollationProtocol->StriColl (mUnicodeCollationProtocol, (CHAR16*)FileName, L"NULL") != 0) &&
!EFI_ERROR(Status) && ((OpenMode & EFI_FILE_MODE_CREATE) != 0)){