ShellPkg: Correct 3 places where memory was not being properly released by the shell.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jaben Carsey <jaben.carsey@intel.com> Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com> Reviewed-by: Liu, Jiang A <jiang.a.liu@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13938 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -105,7 +105,7 @@ FreeEnvironmentVariableList(
|
|||||||
}
|
}
|
||||||
|
|
||||||
for ( Node = (ENV_VAR_LIST*)GetFirstNode(List)
|
for ( Node = (ENV_VAR_LIST*)GetFirstNode(List)
|
||||||
; IsListEmpty(List)
|
; !IsListEmpty(List)
|
||||||
; Node = (ENV_VAR_LIST*)GetFirstNode(List)
|
; Node = (ENV_VAR_LIST*)GetFirstNode(List)
|
||||||
){
|
){
|
||||||
ASSERT(Node != NULL);
|
ASSERT(Node != NULL);
|
||||||
|
@ -192,6 +192,7 @@ ParseCommandLineToArgs(
|
|||||||
//
|
//
|
||||||
(*Argv) = AllocateZeroPool((Count)*sizeof(CHAR16*));
|
(*Argv) = AllocateZeroPool((Count)*sizeof(CHAR16*));
|
||||||
if (*Argv == NULL) {
|
if (*Argv == NULL) {
|
||||||
|
SHELL_FREE_NON_NULL(TempParameter);
|
||||||
return (EFI_OUT_OF_RESOURCES);
|
return (EFI_OUT_OF_RESOURCES);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,6 +208,7 @@ ParseCommandLineToArgs(
|
|||||||
(*Argc)++;
|
(*Argc)++;
|
||||||
}
|
}
|
||||||
ASSERT(Count >= (*Argc));
|
ASSERT(Count >= (*Argc));
|
||||||
|
SHELL_FREE_NON_NULL(TempParameter);
|
||||||
return (EFI_SUCCESS);
|
return (EFI_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ ShellCommandLibDestructor (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
SHELL_COMMAND_INTERNAL_LIST_ENTRY *Node;
|
SHELL_COMMAND_INTERNAL_LIST_ENTRY *Node;
|
||||||
COMMAND_LIST *Node2;
|
ALIAS_LIST *Node2;
|
||||||
SCRIPT_FILE_LIST *Node3;
|
SCRIPT_FILE_LIST *Node3;
|
||||||
SHELL_MAP_LIST *MapNode;
|
SHELL_MAP_LIST *MapNode;
|
||||||
//
|
//
|
||||||
@ -144,13 +144,14 @@ ShellCommandLibDestructor (
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// enumerate through the init command list and free all memory
|
// enumerate through the alias list and free all memory
|
||||||
//
|
//
|
||||||
while (!IsListEmpty (&mAliasList.Link)) {
|
while (!IsListEmpty (&mAliasList.Link)) {
|
||||||
Node2 = (COMMAND_LIST *)GetFirstNode(&mAliasList.Link);
|
Node2 = (ALIAS_LIST *)GetFirstNode(&mAliasList.Link);
|
||||||
RemoveEntryList(&Node2->Link);
|
RemoveEntryList(&Node2->Link);
|
||||||
SHELL_FREE_NON_NULL(Node2->CommandString);
|
SHELL_FREE_NON_NULL(Node2->CommandString);
|
||||||
FreePool(Node2);
|
SHELL_FREE_NON_NULL(Node2->Alias);
|
||||||
|
SHELL_FREE_NON_NULL(Node2);
|
||||||
DEBUG_CODE(Node2 = NULL;);
|
DEBUG_CODE(Node2 = NULL;);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user