if (!Quiet) {\r
Status = ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_RM_LOG_DELETE_CONF), gShellLevel2HiiHandle, Node->FullName);\r
Status = ShellPromptForResponse(ShellPromptResponseTypeYesNo, NULL, (VOID**)&Resp);\r
- ASSERT_EFI_ERROR(Status);\r
ASSERT(Resp != NULL);\r
if (EFI_ERROR(Status) || *Resp != ShellPromptResponseYes) {\r
SHELL_FREE_NON_NULL(Resp);\r
// Update the node filename to have full path with file system identifier\r
//\r
TempName = AllocateZeroPool(StrSize(Node->FullName) + StrSize(Node2->FullName));\r
- StrCpy(TempName, Node->FullName);\r
- TempName[StrStr(TempName, L":")+1-TempName] = CHAR_NULL;\r
- StrCat(TempName, Node2->FullName);\r
- FreePool((VOID*)Node2->FullName);\r
- Node2->FullName = TempName;\r
-\r
- //\r
- // Now try again to open the file\r
- //\r
- Node2->Status = gEfiShellProtocol->OpenFileByName (Node2->FullName, &Node2->Handle, EFI_FILE_MODE_READ|EFI_FILE_MODE_WRITE);\r
+ if (TempName == NULL) {\r
+ ShellStatus = SHELL_OUT_OF_RESOURCES;\r
+ } else {\r
+ StrCpy(TempName, Node->FullName);\r
+ TempName[StrStr(TempName, L":")+1-TempName] = CHAR_NULL;\r
+ StrCat(TempName, Node2->FullName);\r
+ FreePool((VOID*)Node2->FullName);\r
+ Node2->FullName = TempName;\r
+\r
+ //\r
+ // Now try again to open the file\r
+ //\r
+ Node2->Status = gEfiShellProtocol->OpenFileByName (Node2->FullName, &Node2->Handle, EFI_FILE_MODE_READ|EFI_FILE_MODE_WRITE);\r
+ }\r
+ }\r
+ if (!EFI_ERROR(Node2->Status)) {\r
+ ShellStatus = CascadeDelete(Node2, Quiet);\r
+ } else if (ShellStatus == SHELL_SUCCESS) {\r
+ ShellStatus = (SHELL_STATUS)(Node2->Status&(~0x80000000));\r
}\r
- ShellStatus = CascadeDelete(Node2, Quiet);\r
if (ShellStatus != SHELL_SUCCESS) {\r
if (List!=NULL) {\r
gEfiShellProtocol->FreeFileList(&List);\r