Remove SafeFreePool from MemoryAllocationLib as this API's name is misleading. Its implementation only check if a pointer is NULL. If a garbage pointer is passed in, the gBS->FreePool will still ASSERT in debug build and return error code.

It is recommended that module writer should keep track how a pointer is allocated and free it after use.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6307 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qwang12
2008-10-30 08:00:56 +00:00
parent 676df92c2c
commit 7001eaf8e5
8 changed files with 93 additions and 43 deletions

View File

@@ -386,7 +386,9 @@ DestroyExpression (
OpCode = EXPRESSION_OPCODE_FROM_LINK (Link);
RemoveEntryList (&OpCode->Link);
SafeFreePool (OpCode->ValueList);
if (OpCode->ValueList != NULL) {
FreePool (OpCode->ValueList);
}
}
//
@@ -416,25 +418,25 @@ DestroyStorage (
return;
}
SafeFreePool (Storage->Name);
SafeFreePool (Storage->Buffer);
SafeFreePool (Storage->EditBuffer);
FreePool (Storage->Name);
FreePool (Storage->Buffer);
FreePool (Storage->EditBuffer);
while (!IsListEmpty (&Storage->NameValueListHead)) {
Link = GetFirstNode (&Storage->NameValueListHead);
NameValueNode = NAME_VALUE_NODE_FROM_LINK (Link);
RemoveEntryList (&NameValueNode->Link);
SafeFreePool (NameValueNode->Name);
SafeFreePool (NameValueNode->Value);
SafeFreePool (NameValueNode->EditValue);
SafeFreePool (NameValueNode);
FreePool (NameValueNode->Name);
FreePool (NameValueNode->Value);
FreePool (NameValueNode->EditValue);
FreePool (NameValueNode);
}
SafeFreePool (Storage->ConfigHdr);
SafeFreePool (Storage->ConfigRequest);
FreePool (Storage->ConfigHdr);
FreePool (Storage->ConfigRequest);
gBS->FreePool (Storage);
FreePool (Storage);
}
@@ -500,11 +502,16 @@ DestroyStatement (
DestroyExpression (Expression);
}
SafeFreePool (Statement->VariableName);
SafeFreePool (Statement->BlockName);
if (Statement->VariableName != NULL) {
FreePool (Statement->VariableName);
}
if (Statement->BlockName != NULL) {
FreePool (Statement->BlockName);
}
}
/**
Free resources of a Form
@@ -572,7 +579,7 @@ DestroyFormSet (
//
// Free IFR binary buffer
//
SafeFreePool (FormSet->IfrBinaryData);
FreePool (FormSet->IfrBinaryData);
//
// Free FormSet Storage
@@ -613,10 +620,14 @@ DestroyFormSet (
}
}
SafeFreePool (FormSet->StatementBuffer);
SafeFreePool (FormSet->ExpressionBuffer);
if (FormSet->StatementBuffer != NULL) {
FreePool (FormSet->StatementBuffer);
}
if (FormSet->ExpressionBuffer != NULL) {
FreePool (FormSet->ExpressionBuffer);
}
SafeFreePool (FormSet);
FreePool (FormSet);
}