// 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 = EFI_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 = Node2->Status;\r
}\r
- ShellStatus = CascadeDelete(Node2, Quiet);\r
if (ShellStatus != SHELL_SUCCESS) {\r
if (List!=NULL) {\r
gEfiShellProtocol->FreeFileList(&List);\r