mirror of https://github.com/acidanthera/audk.git
Enhance HiiThunkGetString to handle the case that PlatformLanguage is not set.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9408 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
3b428adef9
commit
43ffc47f9c
|
@ -308,6 +308,9 @@ HiiThunkGetString (
|
||||||
Private = HII_THUNK_PRIVATE_DATA_FROM_THIS(This);
|
Private = HII_THUNK_PRIVATE_DATA_FROM_THIS(This);
|
||||||
|
|
||||||
Rfc4646AsciiLanguage = NULL;
|
Rfc4646AsciiLanguage = NULL;
|
||||||
|
SupportedLanguages = NULL;
|
||||||
|
PlatformLanguage = NULL;
|
||||||
|
Status = EFI_SUCCESS;
|
||||||
|
|
||||||
if (LanguageString != NULL) {
|
if (LanguageString != NULL) {
|
||||||
Iso639AsciiLanguage = AllocateZeroPool (StrLen (LanguageString) + 1);
|
Iso639AsciiLanguage = AllocateZeroPool (StrLen (LanguageString) + 1);
|
||||||
|
@ -328,7 +331,6 @@ HiiThunkGetString (
|
||||||
// Iso639ToRfc4646Map.
|
// Iso639ToRfc4646Map.
|
||||||
//
|
//
|
||||||
ASSERT (Rfc4646AsciiLanguage != NULL);
|
ASSERT (Rfc4646AsciiLanguage != NULL);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
UefiHiiHandle = FwHiiHandleToUefiHiiHandle (Private, Handle);
|
UefiHiiHandle = FwHiiHandleToUefiHiiHandle (Private, Handle);
|
||||||
|
@ -342,16 +344,13 @@ HiiThunkGetString (
|
||||||
//
|
//
|
||||||
SupportedLanguages = HiiGetSupportedLanguages (UefiHiiHandle);
|
SupportedLanguages = HiiGetSupportedLanguages (UefiHiiHandle);
|
||||||
if (SupportedLanguages == NULL) {
|
if (SupportedLanguages == NULL) {
|
||||||
goto Error2;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Get the current platform language setting
|
// Get the current platform language setting
|
||||||
//
|
//
|
||||||
PlatformLanguage = GetEfiGlobalVariable (L"PlatformLang");
|
PlatformLanguage = GetEfiGlobalVariable (L"PlatformLang");
|
||||||
if (PlatformLanguage == NULL) {
|
|
||||||
goto Error1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Get the best matching language from SupportedLanguages
|
// Get the best matching language from SupportedLanguages
|
||||||
|
@ -359,36 +358,38 @@ HiiThunkGetString (
|
||||||
BestLanguage = GetBestLanguage (
|
BestLanguage = GetBestLanguage (
|
||||||
SupportedLanguages,
|
SupportedLanguages,
|
||||||
FALSE, // RFC 4646 mode
|
FALSE, // RFC 4646 mode
|
||||||
(Rfc4646AsciiLanguage != NULL) ? Rfc4646AsciiLanguage : "",
|
(Rfc4646AsciiLanguage != NULL) ? Rfc4646AsciiLanguage : "", // Highest priority
|
||||||
PlatformLanguage, // Next highest priority
|
(PlatformLanguage != NULL) ? PlatformLanguage : "", // Next highest priority
|
||||||
SupportedLanguages, // Lowest priority
|
SupportedLanguages, // Lowest priority
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
if (BestLanguage == NULL) {
|
if (BestLanguage != NULL) {
|
||||||
FreePool (PlatformLanguage);
|
Status = mHiiStringProtocol->GetString (
|
||||||
Error1:
|
mHiiStringProtocol,
|
||||||
FreePool (SupportedLanguages);
|
BestLanguage,
|
||||||
Error2:
|
UefiHiiHandle,
|
||||||
|
Token,
|
||||||
|
StringBuffer,
|
||||||
|
BufferLengthTemp,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
FreePool (BestLanguage);
|
||||||
|
} else {
|
||||||
Status = EFI_INVALID_PARAMETER;
|
Status = EFI_INVALID_PARAMETER;
|
||||||
goto Done;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = mHiiStringProtocol->GetString (
|
|
||||||
mHiiStringProtocol,
|
|
||||||
BestLanguage,
|
|
||||||
UefiHiiHandle,
|
|
||||||
Token,
|
|
||||||
StringBuffer,
|
|
||||||
BufferLengthTemp,
|
|
||||||
NULL
|
|
||||||
);
|
|
||||||
FreePool (BestLanguage);
|
|
||||||
|
|
||||||
Done:
|
Done:
|
||||||
if (Rfc4646AsciiLanguage != NULL) {
|
if (Rfc4646AsciiLanguage != NULL) {
|
||||||
FreePool (Rfc4646AsciiLanguage);
|
FreePool (Rfc4646AsciiLanguage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (SupportedLanguages != NULL) {
|
||||||
|
FreePool (SupportedLanguages);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PlatformLanguage != NULL) {
|
||||||
|
FreePool (PlatformLanguage);
|
||||||
|
}
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue