The fix is also applicable for other toolchains like GCC or VS2010, so I will update the subject of this patch to: Fix the build fail issue on VS2008\VS2010\GCC. And check in the patch to pass build.
Thanks, Dandan -----Original Message----- From: Gao, Liming Sent: Wednesday, February 24, 2016 1:18 PM To: Bi, Dandan; [email protected] Cc: Dong, Eric Subject: RE: [patch] MdeModulePkg: Fix the build fail issue on VS2008 Reviewed-by: Liming Gao <[email protected]> -----Original Message----- From: Bi, Dandan Sent: Wednesday, February 24, 2016 1:08 PM To: [email protected] Cc: Gao, Liming <[email protected]>; Dong, Eric <[email protected]> Subject: [patch] MdeModulePkg: Fix the build fail issue on VS2008 This is caused by my last commit,the LoadOption may not initialize when call FreePool, and after investigation, find that we can delete the LoadOption variable, this patch is to fix this issue. Cc: Liming Gao <[email protected]> Cc: Eric Dong <[email protected]> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <[email protected]> --- .../BootMaintenanceManagerUiLib/BootOption.c | 32 ++++++---------------- 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c b/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c index 5665d04..0bd3170 100644 --- a/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c +++ b/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c @@ -246,11 +246,10 @@ BOpt_GetBootOptions ( ) { UINTN Index; UINT16 BootString[10]; UINT8 *LoadOptionFromVar; - UINT8 *LoadOption; UINTN BootOptionSize; BOOLEAN BootNextFlag; UINT16 *BootOrderList; UINTN BootOrderListSize; UINT16 *BootNext; @@ -310,18 +309,10 @@ BOpt_GetBootOptions ( GetEfiGlobalVariable2 (BootString, (VOID **) &LoadOptionFromVar, &BootOptionSize); if (LoadOptionFromVar == NULL) { continue; } - LoadOption = AllocateZeroPool (BootOptionSize); - if (LoadOption == NULL) { - continue; - } - - CopyMem (LoadOption, LoadOptionFromVar, BootOptionSize); - FreePool (LoadOptionFromVar); - if (BootNext != NULL) { BootNextFlag = (BOOLEAN) (*BootNext == BootOrderList[Index]); } else { BootNextFlag = FALSE; } @@ -329,21 +320,21 @@ BOpt_GetBootOptions ( NewMenuEntry = BOpt_CreateMenuEntry (BM_LOAD_CONTEXT_SELECT); ASSERT (NULL != NewMenuEntry); NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext; - LoadOptionPtr = LoadOption; - LoadOptionEnd = LoadOption + BootOptionSize; + LoadOptionPtr = LoadOptionFromVar; + LoadOptionEnd = LoadOptionFromVar + BootOptionSize; NewMenuEntry->OptionNumber = BootOrderList[Index]; NewLoadContext->Deleted = FALSE; NewLoadContext->IsBootNext = BootNextFlag; // // Is a Legacy Device? // - Ptr = (UINT8 *) LoadOption; + Ptr = (UINT8 *) LoadOptionFromVar; // // Attribute = *(UINT32 *)Ptr; // Ptr += sizeof (UINT32); @@ -421,21 +412,21 @@ BOpt_GetBootOptions ( ); } InsertTailList (&BootOptionMenu.Head, &NewMenuEntry->Link); MenuCount++; + FreePool (LoadOptionFromVar); } EfiBootManagerFreeLoadOptions (BootOption, BootOptionCount); if (BootNext != NULL) { FreePool (BootNext); } if (BootOrderList != NULL) { FreePool (BootOrderList); } - FreePool(LoadOption); BootOptionMenu.MenuNumber = MenuCount; return EFI_SUCCESS; } /** @@ -641,11 +632,10 @@ BOpt_GetDriverOptions ( ) { UINTN Index; UINT16 DriverString[12]; UINT8 *LoadOptionFromVar; - UINT8 *LoadOption; UINTN DriverOptionSize; UINT16 *DriverOrderList; UINTN DriverOrderListSize; BM_MENU_ENTRY *NewMenuEntry; @@ -682,26 +672,19 @@ BOpt_GetDriverOptions ( GetEfiGlobalVariable2 (DriverString, (VOID **) &LoadOptionFromVar, &DriverOptionSize); if (LoadOptionFromVar == NULL) { continue; } - LoadOption = AllocateZeroPool (DriverOptionSize); - if (LoadOption == NULL) { - continue; - } - - CopyMem (LoadOption, LoadOptionFromVar, DriverOptionSize); - FreePool (LoadOptionFromVar); NewMenuEntry = BOpt_CreateMenuEntry (BM_LOAD_CONTEXT_SELECT); if (NULL == NewMenuEntry) { return EFI_OUT_OF_RESOURCES; } NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext; - LoadOptionPtr = LoadOption; - LoadOptionEnd = LoadOption + DriverOptionSize; + LoadOptionPtr = LoadOptionFromVar; + LoadOptionEnd = LoadOptionFromVar + DriverOptionSize; NewMenuEntry->OptionNumber = DriverOrderList[Index]; NewLoadContext->Deleted = FALSE; NewLoadContext->IsLegacy = FALSE; // @@ -759,17 +742,18 @@ BOpt_GetDriverOptions ( ); } InsertTailList (&DriverOptionMenu.Head, &NewMenuEntry->Link); + FreePool (LoadOptionFromVar); } if (DriverOrderList != NULL) { FreePool (DriverOrderList); } - FreePool(LoadOption); + DriverOptionMenu.MenuNumber = Index; return EFI_SUCCESS; } -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

