UINTN Size;\r
EFI_HANDLE ConInHandle;\r
EFI_SIMPLE_TEXT_INPUT_PROTOCOL *OldConIn;\r
+ SPLIT_LIST *Split;\r
\r
if (PcdGet8(PcdShellSupportLevel) > 3) {\r
return (EFI_UNSUPPORTED);\r
}\r
\r
if (!IsListEmpty(&ShellInfoObject.SplitList.Link)){\r
- ASSERT(FALSE); ///@todo finish this de-allocation.\r
+ ASSERT(FALSE); ///@todo finish this de-allocation (free SplitStdIn/Out when needed).\r
+\r
+ for ( Split = (SPLIT_LIST*)GetFirstNode (&ShellInfoObject.SplitList.Link)\r
+ ; !IsNull (&ShellInfoObject.SplitList.Link, &Split->Link)\r
+ ; Split = (SPLIT_LIST *)GetNextNode (&ShellInfoObject.SplitList.Link, &Split->Link)\r
+ ) {\r
+ RemoveEntryList (&Split->Link);\r
+ FreePool (Split);\r
+ }\r
+\r
+ DEBUG_CODE (InitializeListHead (&ShellInfoObject.SplitList.Link););\r
}\r
\r
if (ShellInfoObject.ShellInitSettings.FileName != NULL) {\r
//\r
// Note that the original StdIn is now the StdOut...\r
//\r
- if (Split->SplitStdOut != NULL && Split->SplitStdOut != StdIn) {\r
+ if (Split->SplitStdOut != NULL) {\r
ShellInfoObject.NewEfiShellProtocol->CloseFile(ConvertShellHandleToEfiFileProtocol(Split->SplitStdOut));\r
}\r
if (Split->SplitStdIn != NULL) {\r
ShellInfoObject.NewEfiShellProtocol->CloseFile(ConvertShellHandleToEfiFileProtocol(Split->SplitStdIn));\r
+ FreePool (Split->SplitStdIn);\r
}\r
\r
FreePool(Split);\r