update error handling to use less ASSERT.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11053 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
jcarsey 2010-11-12 21:40:12 +00:00
parent a12e31e680
commit ff51746bd4
3 changed files with 29 additions and 13 deletions

View File

@ -331,7 +331,8 @@ GetHandleListByProtocol (
@param[in] ProtocolGuids A NULL terminated list of protocol GUIDs. @param[in] ProtocolGuids A NULL terminated list of protocol GUIDs.
@retval NULL A memory allocation failed. @retval NULL A memory allocation failed.
@return A NULL terminated list of handles. @retval NULL ProtocolGuids was NULL.
@return A NULL terminated list of EFI_HANDLEs.
**/ **/
EFI_HANDLE* EFI_HANDLE*
EFIAPI EFIAPI

View File

@ -1105,7 +1105,9 @@ ParseHandleDatabaseForChildControllers(
BOOLEAN Found; BOOLEAN Found;
EFI_HANDLE *HandleBufferForReturn; EFI_HANDLE *HandleBufferForReturn;
ASSERT (MatchingHandleCount != NULL); if (MatchingHandleCount == NULL) {
return (EFI_INVALID_PARAMETER);
}
Status = PARSE_HANDLE_DATABASE_UEFI_DRIVERS ( Status = PARSE_HANDLE_DATABASE_UEFI_DRIVERS (
ControllerHandle, ControllerHandle,
@ -1116,10 +1118,13 @@ ParseHandleDatabaseForChildControllers(
return Status; return Status;
} }
HandleBufferForReturn = GetHandleListByProtocol(&gEfiDriverBindingProtocolGuid); //
// Get a buffer big enough for all the controllers.
//
HandleBufferForReturn = GetHandleListByProtocol(&gEfiDevicePathProtocolGuid);
if (HandleBufferForReturn == NULL) { if (HandleBufferForReturn == NULL) {
FreePool (DriverBindingHandleBuffer); FreePool (DriverBindingHandleBuffer);
return Status; return (EFI_NOT_FOUND);
} }
*MatchingHandleCount = 0; *MatchingHandleCount = 0;
@ -1361,7 +1366,8 @@ GetHandleListByProtocol (
@param[in] ProtocolGuids A NULL terminated list of protocol GUIDs. @param[in] ProtocolGuids A NULL terminated list of protocol GUIDs.
@retval NULL A memory allocation failed. @retval NULL A memory allocation failed.
@return A NULL terminated list of handles. @retval NULL ProtocolGuids was NULL.
@return A NULL terminated list of EFI_HANDLEs.
**/ **/
EFI_HANDLE* EFI_HANDLE*
EFIAPI EFIAPI
@ -1397,7 +1403,6 @@ GetHandleListByProtocolList (
} }
HandleList = AllocateZeroPool(TotalSize); HandleList = AllocateZeroPool(TotalSize);
ASSERT(HandleList != NULL);
if (HandleList == NULL) { if (HandleList == NULL) {
return (NULL); return (NULL);
} }
@ -1405,16 +1410,16 @@ GetHandleListByProtocolList (
Size = 0; Size = 0;
for (GuidWalker = ProtocolGuids ; GuidWalker != NULL && *GuidWalker != NULL ; GuidWalker++){ for (GuidWalker = ProtocolGuids ; GuidWalker != NULL && *GuidWalker != NULL ; GuidWalker++){
TempSize = TotalSize - Size; TempSize = TotalSize - Size;
Status = gBS->LocateHandle(ByProtocol, (EFI_GUID*)(*GuidWalker), NULL, &TempSize, HandleList+((TotalSize - Size)/sizeof(EFI_HANDLE))); Status = gBS->LocateHandle(ByProtocol, (EFI_GUID*)(*GuidWalker), NULL, &TempSize, HandleList+(Size/sizeof(EFI_HANDLE)));
// //
// Allow for missing protocols... Only update the 'used' size upon success. // Allow for missing protocols... Only update the 'used' size upon success.
// //
if (!EFI_ERROR(Status)) { if (!EFI_ERROR(Status)) {
Size = TempSize; Size += TempSize;
} }
} }
HandleList[(TotalSize/sizeof(EFI_HANDLE))-1] = NULL; ASSERT(HandleList[(TotalSize/sizeof(EFI_HANDLE))-1] == NULL);
for (HandleWalker1 = HandleList ; HandleWalker1 != NULL && *HandleWalker1 != NULL ; HandleWalker1++) { for (HandleWalker1 = HandleList ; HandleWalker1 != NULL && *HandleWalker1 != NULL ; HandleWalker1++) {
for (HandleWalker2 = HandleWalker1 + 1; HandleWalker2 != NULL && *HandleWalker2 != NULL ; HandleWalker2++) { for (HandleWalker2 = HandleWalker1 + 1; HandleWalker2 != NULL && *HandleWalker2 != NULL ; HandleWalker2++) {

View File

@ -1171,7 +1171,8 @@ ConvertShellHandleToEfiFileProtocol(
@param[in] Handle The pointer to EFI_FILE_PROTOCOL to convert. @param[in] Handle The pointer to EFI_FILE_PROTOCOL to convert.
@param[in] Path The path to the file for verification. @param[in] Path The path to the file for verification.
@return a SHELL_FILE_HANDLE representing the same file. @return A SHELL_FILE_HANDLE representing the same file.
@retval NULL There was not enough memory.
**/ **/
SHELL_FILE_HANDLE SHELL_FILE_HANDLE
EFIAPI EFIAPI
@ -1185,11 +1186,18 @@ ConvertEfiFileProtocolToShellHandle(
if (Path != NULL) { if (Path != NULL) {
Buffer = AllocateZeroPool(sizeof(SHELL_COMMAND_FILE_HANDLE)); Buffer = AllocateZeroPool(sizeof(SHELL_COMMAND_FILE_HANDLE));
ASSERT(Buffer != NULL); if (Buffer == NULL) {
return (NULL);
}
NewNode = AllocatePool(sizeof(BUFFER_LIST)); NewNode = AllocatePool(sizeof(BUFFER_LIST));
ASSERT(NewNode != NULL); if (NewNode == NULL) {
return (NULL);
}
Buffer->FileHandle = (EFI_FILE_PROTOCOL*)Handle; Buffer->FileHandle = (EFI_FILE_PROTOCOL*)Handle;
Buffer->Path = StrnCatGrow(&Buffer->Path, NULL, Path, 0); Buffer->Path = StrnCatGrow(&Buffer->Path, NULL, Path, 0);
if (Buffer->Path == NULL) {
return (NULL);
}
NewNode->Buffer = Buffer; NewNode->Buffer = Buffer;
InsertHeadList(&mFileHandleList.Link, &NewNode->Link); InsertHeadList(&mFileHandleList.Link, &NewNode->Link);
@ -1244,8 +1252,10 @@ ShellFileHandleRemove(
; Node = (BUFFER_LIST*)GetNextNode(&mFileHandleList.Link, &Node->Link) ; Node = (BUFFER_LIST*)GetNextNode(&mFileHandleList.Link, &Node->Link)
){ ){
if ((Node->Buffer) && (((SHELL_COMMAND_FILE_HANDLE *)Node->Buffer)->FileHandle == Handle)){ if ((Node->Buffer) && (((SHELL_COMMAND_FILE_HANDLE *)Node->Buffer)->FileHandle == Handle)){
SHELL_FREE_NON_NULL(((SHELL_COMMAND_FILE_HANDLE *)Node->Buffer)->Path);
RemoveEntryList(&Node->Link); RemoveEntryList(&Node->Link);
SHELL_FREE_NON_NULL(((SHELL_COMMAND_FILE_HANDLE *)Node->Buffer)->Path);
SHELL_FREE_NON_NULL(Node->Buffer);
SHELL_FREE_NON_NULL(Node);
return (TRUE); return (TRUE);
} }
} }