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
if (ShellInfoObject.NewEfiShellProtocol->IsRootShell()){\r
InternalEfiShellSetEnv(L"cwd", NULL, TRUE);\r
}\r
- CleanUpShellProtocol(ShellInfoObject.NewEfiShellProtocol);\r
+ CleanUpShellEnvironment (ShellInfoObject.NewEfiShellProtocol);\r
DEBUG_CODE(ShellInfoObject.NewEfiShellProtocol = NULL;);\r
}\r
\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
VOID*\r
EFIAPI\r
-AddBufferToFreeList(\r
+AddBufferToFreeList (\r
VOID *Buffer\r
)\r
{\r
return (NULL);\r
}\r
\r
- BufferListEntry = AllocateZeroPool(sizeof(BUFFER_LIST));\r
- ASSERT(BufferListEntry != NULL);\r
+ BufferListEntry = AllocateZeroPool (sizeof (BUFFER_LIST));\r
+ if (BufferListEntry == NULL) {\r
+ return NULL;\r
+ }\r
+\r
BufferListEntry->Buffer = Buffer;\r
- InsertTailList(&ShellInfoObject.BufferToFreeList.Link, &BufferListEntry->Link);\r
+ InsertTailList (&ShellInfoObject.BufferToFreeList.Link, &BufferListEntry->Link);\r
return (Buffer);\r
}\r
\r
\r
\r
Node = AllocateZeroPool(sizeof(BUFFER_LIST));\r
- ASSERT(Node != NULL);\r
- Node->Buffer = AllocateCopyPool(StrSize(Buffer), Buffer);\r
- ASSERT(Node->Buffer != NULL);\r
+ if (Node == NULL) {\r
+ return;\r
+ }\r
+\r
+ Node->Buffer = AllocateCopyPool (StrSize (Buffer), Buffer);\r
+ if (Node->Buffer == NULL) {\r
+ FreePool (Node);\r
+ return;\r
+ }\r
\r
for ( Walker = (BUFFER_LIST*)GetFirstNode(&ShellInfoObject.ViewingSettings.CommandHistory.Link)\r
; !IsNull(&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Walker->Link)\r
// make a SPLIT_LIST item and add to list\r
//\r
Split = AllocateZeroPool(sizeof(SPLIT_LIST));\r
- ASSERT(Split != NULL);\r
+ if (Split == NULL) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
Split->SplitStdIn = StdIn;\r
Split->SplitStdOut = ConvertEfiFileProtocolToShellHandle(CreateFileInterfaceMem(Unicode), NULL);\r
ASSERT(Split->SplitStdOut != 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