[edk2-devel] [PATCH] [edk2-staging] BaseTools/FMMT: Replace file failure when FV level over 2
GregX Yeh
gregx.yeh at intel.com
Tue Dec 1 07:43:55 UTC 2020
Fixed replace file failure when FFS in multi level FV and FV level over 2.
Signed-off-by: GregX Yeh <gregx.yeh at intel.com>
Cc: Bob Feng <bob.c.feng at intel.com>
Cc: Liming Gao <gaoliming at byosoft.com.cn>
---
BaseTools/Source/C/FMMT/FmmtLib.c | 25 +++++++------------------
1 file changed, 7 insertions(+), 18 deletions(-)
diff --git a/BaseTools/Source/C/FMMT/FmmtLib.c b/BaseTools/Source/C/FMMT/FmmtLib.c
index b945e9b63d..952d64fc35 100644
--- a/BaseTools/Source/C/FMMT/FmmtLib.c
+++ b/BaseTools/Source/C/FMMT/FmmtLib.c
@@ -709,10 +709,10 @@ LibGenFfsFile (
free(FfsFileName);
FfsFileName = NULL;
- CurrentFv->FfsNumbers = *FfsCount;
-
*FfsCount += 1;
+ CurrentFv->FfsNumbers = *FfsCount;
+
if (ErasePolarity) {
CurrentFile->State = (UINT8)~(CurrentFile->State);
}
@@ -833,7 +833,6 @@ LibParseSection (
CHAR8 *ToolInputFileName;
CHAR8 *ToolOutputFileName;
BOOLEAN HasUiSection;
- BOOLEAN FirstInFlag;
DataOffset = 0;
GuidAttr = 0;
@@ -869,7 +868,6 @@ LibParseSection (
EncapDataNeedUpdata = TRUE;
LargeHeaderOffset = 0;
HasUiSection = FALSE;
- FirstInFlag = TRUE;
while (ParsedLength < BufferLength) {
@@ -997,9 +995,7 @@ LibParseSection (
break;
case EFI_SECTION_COMPRESSION:
- if (FirstInFlag) {
- Level ++;
- }
+ Level ++;
NumberOfSections ++;
EncapDataNeedUpdata = TRUE;
@@ -1181,9 +1177,7 @@ LibParseSection (
// looks up the appropriate tool to use for extracting
// a GUID defined FV section.
//
- if (FirstInFlag) {
- Level ++;
- }
+ Level ++;
NumberOfSections++;
EncapDataNeedUpdata = TRUE;
HasUiSection = TRUE;
@@ -1682,7 +1676,6 @@ LibParseSection (
}
ParsedLength += SectionLength;
- FirstInFlag = FALSE;
//
// We make then next section begin on a 4-byte boundary
//
@@ -4274,7 +4267,7 @@ LibEncapNewFvFile(
LocalEncapDataNext = LocalEncapDataTemp->NextNode;
if (LocalEncapDataNext != NULL && LocalEncapDataNext->NextNode != NULL) {
- LibEncapNewFvFile(FvInFd, TemDir, LocalEncapDataTemp, 1, &ChildFileNameList);
+ LibEncapNewFvFile(FvInFd, TemDir, LocalEncapDataTemp,LocalEncapDataTemp->Level - 1, &ChildFileNameList);
ChildFileNameList->ParentLevel = LocalEncapDataTemp->Level -1;
if (FvInFd->ChildFvFFS == NULL) {
FvInFd->ChildFvFFS = ChildFileNameList;
@@ -4329,7 +4322,7 @@ LibEncapNewFvFile(
} else {
LocalEncapData = CurrentEncapData;
while (LocalEncapData != NULL) {
- if (Level_Break > 1 && LocalEncapData->Type == FMMT_ENCAP_TREE_FFS) {
+ if (LocalEncapData->Type == FMMT_ENCAP_TREE_FFS) {
LocalEncapDataTemp = LocalEncapData->RightNode;
while (LocalEncapDataTemp != NULL) {
LocalEncapDataNext = LocalEncapDataTemp->NextNode;
@@ -4485,7 +4478,7 @@ LibEncapNewFvFile(
//
FfsFoundFlag = FALSE;
IsRootFv = FALSE;
- for (Index=0; Index <= FvInFd->FfsNumbers; Index++) {
+ for (Index=0; Index < FvInFd->FfsNumbers; Index++) {
if (OutputFileNameList != NULL && OutputFileNameList->FFSName != NULL && OutputFileNameList->IsFFS == FALSE){
break;
}
@@ -5077,10 +5070,6 @@ LibEncapNewFvFile(
if (CurrentEncapData == NULL) {
LocalEncapData = FvInFd->EncapData;
} else {
- if (OutputFileNameList != NULL && OutputFileNameList->FFSName != NULL && OutputFileNameList->IsFFS == TRUE) {
- *OutputFile = OutputFileNameList;
- return EFI_SUCCESS;
- }
LocalEncapData = CurrentEncapData;
}
ParentLevel -= 1;
--
2.16.2.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#68122): https://edk2.groups.io/g/devel/message/68122
Mute This Topic: https://groups.io/mt/78628309/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list