diff --git a/ShellPkg/Application/Shell/ShellProtocol.c b/ShellPkg/Application/Shell/ShellProtocol.c index 9cc4ca38c1..ec4559480d 100644 --- a/ShellPkg/Application/Shell/ShellProtocol.c +++ b/ShellPkg/Application/Shell/ShellProtocol.c @@ -1914,6 +1914,8 @@ CreateAndPopulateShellFileInfo( } } + TempString = PathCleanUpDirectories(TempString); + ShellFileListItem->FullName = TempString; ShellFileListItem->Status = Status; ShellFileListItem->Handle = Handle; @@ -2143,7 +2145,7 @@ ShellSearchHandle( // FileInfo = FileHandleGetInfo(FileHandle); NewShellNode = CreateAndPopulateShellFileInfo( - L":", + MapName, EFI_SUCCESS, L"\\", FileHandle, diff --git a/ShellPkg/Library/BasePathLib/BasePathLib.c b/ShellPkg/Library/BasePathLib/BasePathLib.c index cc46c0fc33..301bd3b279 100644 --- a/ShellPkg/Library/BasePathLib/BasePathLib.c +++ b/ShellPkg/Library/BasePathLib/BasePathLib.c @@ -116,7 +116,15 @@ PathCleanUpDirectories( *(TempString + 1) = CHAR_NULL; } - + while ((TempString = StrStr(Path, L"\\\\")) != NULL) { + *TempString = CHAR_NULL; + TempString += 1; + TempSize = StrSize(TempString); + CopyMem(Path+StrLen(Path), TempString, TempSize); + } + if ((TempString = StrStr(Path, L"\\\\")) != NULL && *(TempString + 1) == CHAR_NULL) { + *(TempString) = CHAR_NULL; + } return (Path); }