diff options
author | qwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-10-30 07:32:46 +0000 |
---|---|---|
committer | qwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-10-30 07:32:46 +0000 |
commit | 676df92c2c0c5bdeb0f8e27349f5dd467928ce09 (patch) | |
tree | 68999d69951d5884d39a206c5c81ba59d91157fb /MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c | |
parent | bb1d8ee66943c3d126abbfc007159eb0fe458927 (diff) | |
download | edk2-platforms-676df92c2c0c5bdeb0f8e27349f5dd467928ce09.tar.xz |
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@6306 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c')
-rw-r--r-- | MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c | 60 |
1 files changed, 43 insertions, 17 deletions
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c b/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c index 3a9a8bc3b9..f640d12e3a 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c @@ -445,7 +445,9 @@ DestroyExpression ( OpCode = EXPRESSION_OPCODE_FROM_LINK (Link); RemoveEntryList (&OpCode->Link); - SafeFreePool (OpCode->ValueList); + if (OpCode->ValueList != NULL) { + FreePool (OpCode->ValueList); + } } // @@ -473,25 +475,41 @@ DestroyStorage ( return; } - SafeFreePool (Storage->Name); - SafeFreePool (Storage->Buffer); - SafeFreePool (Storage->EditBuffer); + if (Storage->Name != NULL) { + FreePool (Storage->Name); + } + if (Storage->Buffer != NULL) { + FreePool (Storage->Buffer); + } + if (Storage->EditBuffer != NULL) { + 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); + if (NameValueNode->Name != NULL) { + FreePool (NameValueNode->Name); + } + if (NameValueNode->Value != NULL) { + FreePool (NameValueNode->Value); + } + if (NameValueNode->EditValue != NULL) { + FreePool (NameValueNode->EditValue); + } + FreePool (NameValueNode); } - SafeFreePool (Storage->ConfigHdr); - SafeFreePool (Storage->ConfigRequest); + if (Storage->ConfigHdr != NULL) { + FreePool (Storage->ConfigHdr); + } + if (Storage->ConfigRequest != NULL) { + FreePool (Storage->ConfigRequest); + } - gBS->FreePool (Storage); + FreePool (Storage); } @@ -555,8 +573,12 @@ DestroyStatement ( DestroyExpression (Expression); } - SafeFreePool (Statement->VariableName); - SafeFreePool (Statement->BlockName); + if (Statement->VariableName != NULL) { + FreePool (Statement->VariableName); + } + if (Statement->BlockName != NULL) { + FreePool (Statement->BlockName); + } } @@ -623,7 +645,7 @@ DestroyFormSet ( // // Free IFR binary buffer // - SafeFreePool (FormSet->IfrBinaryData); + FreePool (FormSet->IfrBinaryData); // // Free FormSet Storage @@ -664,10 +686,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); } |