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>
This commit is contained in:
Tapan Shah 2016-10-05 13:58:05 -07:00 committed by Jaben Carsey
parent c0b7e2b2bf
commit 2cf9ecd226
1 changed files with 9 additions and 7 deletions

View File

@ -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)){