Return 'My Compuer' PIDL when calling Desktop->ParseDisplayName() with empty path string.
diff --git a/dlls/shell32/shfldr_desktop.c b/dlls/shell32/shfldr_desktop.c index 664cd5d..f8015ee 100644 --- a/dlls/shell32/shfldr_desktop.c +++ b/dlls/shell32/shfldr_desktop.c
@@ -229,12 +229,17 @@ } else { /* it's a filesystem path on the desktop. Let a FSFolder parse it */ - /* build a complete path to create a simple pidl */ - lstrcpyA(szPath, This->sPathTarget); - PathAddBackslashA(szPath); - len = lstrlenA(szPath); - WideCharToMultiByte(CP_ACP, 0, lpszDisplayName, -1, szPath + len, MAX_PATH - len, NULL, NULL); - pidlTemp = _ILCreateFromPathA(szPath); + if (*lpszDisplayName) { + /* build a complete path to create a simple pidl */ + lstrcpyA(szPath, This->sPathTarget); + PathAddBackslashA(szPath); + len = lstrlenA(szPath); + WideCharToMultiByte(CP_ACP, 0, lpszDisplayName, -1, szPath + len, MAX_PATH - len, NULL, NULL); + pidlTemp = _ILCreateFromPathA(szPath); + } else { + pidlTemp = _ILCreateMyComputer(); + } + szNext = NULL; }