diff --git a/dlls/commdlg/filedlg95.c b/dlls/commdlg/filedlg95.c
index 26c79150adbf82936de40a4ef9c4cbf012a962d5..e84147ab1fbedbbe987754d5f427f05d35cade9c 100644
--- a/dlls/commdlg/filedlg95.c
+++ b/dlls/commdlg/filedlg95.c
@@ -2693,7 +2693,7 @@ LPITEMIDLIST GetParentPidl(LPITEMIDLIST pidl)
  *      GetPidlFromName
  *
  * returns the pidl of the file name relative to folder 
- * NULL if an error occured
+ * NULL if an error occurred
  */
 LPITEMIDLIST GetPidlFromName(IShellFolder *lpsf,LPCSTR lpcstrFileName)
 {
@@ -2704,7 +2704,8 @@ LPITEMIDLIST GetPidlFromName(IShellFolder *lpsf,LPCSTR lpcstrFileName)
   TRACE("sf=%p file=%s\n", lpsf, lpcstrFileName);
 
   if(!lpcstrFileName) return NULL;
-    
+  if(!*lpcstrFileName) return NULL;
+
   MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,lpcstrFileName,-1,(LPWSTR)lpwstrDirName,MAX_PATH);  
 
   if(!lpsf)
diff --git a/dlls/shell32/shlfolder.c b/dlls/shell32/shlfolder.c
index 49130c5e50ffc9f0eedebe0e555f5cd6fb615105..31fc1c7acd8bdca55bd049a856634b0ea35d3b46 100644
--- a/dlls/shell32/shlfolder.c
+++ b/dlls/shell32/shlfolder.c
@@ -682,7 +682,10 @@ static HRESULT WINAPI IShellFolder_fnParseDisplayName(
 	  }
 	}
 
-	*ppidl = pidlTemp;
+        if (!hr)
+	  *ppidl = pidlTemp;
+	else
+	  *ppidl = NULL;
 
 	TRACE("(%p)->(-- pidl=%p ret=0x%08lx)\n", This, ppidl? *ppidl:0, hr);