mirror of https://github.com/acidanthera/audk.git
Update ExtractGuidedSectionLib instance to cover the same handler is registered multi times, the later will override the pre setting.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4183 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
aa09397b3c
commit
e2701217a1
|
@ -114,12 +114,32 @@ ExtractGuidedSectionRegisterHandlers (
|
|||
IN EXTRACT_GUIDED_SECTION_DECODE_HANDLER DecodeHandler
|
||||
)
|
||||
{
|
||||
UINT32 Index;
|
||||
//
|
||||
// Check input paramter.
|
||||
//
|
||||
if (SectionGuid == NULL) {
|
||||
return RETURN_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
//
|
||||
// Search the match registered GetInfo handler for the input guided section.
|
||||
//
|
||||
for (Index = 0; Index < mNumberOfExtractHandler; Index ++) {
|
||||
if (CompareGuid (&mExtractHandlerGuidTable[Index], SectionGuid)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// If the guided handler has been registered before, only update its handler.
|
||||
//
|
||||
if (Index < mNumberOfExtractHandler) {
|
||||
mExtractDecodeHandlerTable [Index] = DecodeHandler;
|
||||
mExtractGetInfoHandlerTable [Index] = GetInfoHandler;
|
||||
return RETURN_SUCCESS;
|
||||
}
|
||||
|
||||
//
|
||||
// Check the global table is enough to contain new Handler.
|
||||
//
|
||||
|
|
|
@ -151,6 +151,7 @@ ExtractGuidedSectionRegisterHandlers (
|
|||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT32 Index;
|
||||
PEI_EXTRACT_GUIDED_SECTION_HANDLER_INFO *HandlerInfo;
|
||||
|
||||
//
|
||||
|
@ -167,6 +168,25 @@ ExtractGuidedSectionRegisterHandlers (
|
|||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Search the match registered GetInfo handler for the input guided section.
|
||||
//
|
||||
for (Index = 0; Index < HandlerInfo->NumberOfExtractHandler; Index ++) {
|
||||
if (CompareGuid (&(HandlerInfo->ExtractHandlerGuidTable[Index]), SectionGuid)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// If the guided handler has been registered before, only update its handler.
|
||||
//
|
||||
if (Index < HandlerInfo->NumberOfExtractHandler) {
|
||||
HandlerInfo->ExtractDecodeHandlerTable [Index] = DecodeHandler;
|
||||
HandlerInfo->ExtractGetInfoHandlerTable [Index] = GetInfoHandler;
|
||||
return RETURN_SUCCESS;
|
||||
}
|
||||
|
||||
//
|
||||
// Check the global table is enough to contain new Handler.
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue