return OpenSectionStreamEx (\r
SectionStreamLength,\r
SectionStream,\r
- TRUE,\r
+ FALSE,\r
0,\r
SectionStreamHandle\r
);\r
// If it's an encapsulating section, we close the resulting section stream.\r
// CloseSectionStream will free all memory associated with the stream.\r
//\r
- CloseSectionStream (ChildNode->EncapsulatedStreamHandle);\r
+ CloseSectionStream (ChildNode->EncapsulatedStreamHandle, TRUE);\r
}\r
\r
if (ChildNode->Event != NULL) {\r
SEP member function. Deletes an existing section stream\r
\r
@param StreamHandleToClose Indicates the stream to close\r
+ @param FreeStreamBuffer TRUE - Need to free stream buffer;\r
+ FALSE - No need to free stream buffer.\r
\r
@retval EFI_SUCCESS The section stream is closed sucessfully.\r
@retval EFI_OUT_OF_RESOURCES Memory allocation failed.\r
EFI_STATUS\r
EFIAPI\r
CloseSectionStream (\r
- IN UINTN StreamHandleToClose\r
+ IN UINTN StreamHandleToClose,\r
+ IN BOOLEAN FreeStreamBuffer\r
)\r
{\r
CORE_SECTION_STREAM_NODE *StreamNode;\r
ChildNode = CHILD_SECTION_NODE_FROM_LINK (Link);\r
FreeChildNode (ChildNode);\r
}\r
- CoreFreePool (StreamNode->StreamBuffer);\r
+ if (FreeStreamBuffer) {\r
+ CoreFreePool (StreamNode->StreamBuffer);\r
+ }\r
CoreFreePool (StreamNode);\r
Status = EFI_SUCCESS;\r
} else {\r