diff --git a/dlls/commdlg/filedlg95.c b/dlls/commdlg/filedlg95.c index 52de8469c633836e779d064f22bf184ad234a75c..57ecfad18c3316836f063ab5b5da1accbdf86511 100644 --- a/dlls/commdlg/filedlg95.c +++ b/dlls/commdlg/filedlg95.c @@ -1718,8 +1718,7 @@ HRESULT GetName(LPSHELLFOLDER lpsf, LPITEMIDLIST pidl,DWORD dwFlags,LPSTR lpstrF dwFlags, &str))) { - StrRetToStrN(lpstrFileName, MAX_PATH, &str, pidl); - return NOERROR; + return StrRetToStrNA(lpstrFileName, MAX_PATH, &str, pidl); } return E_FAIL; } @@ -1782,7 +1781,8 @@ LPITEMIDLIST GetPidlFromName(IShellFolder *psf,LPCSTR lpcstrFileName) LPITEMIDLIST pidl; ULONG ulEaten; wchar_t lpwstrDirName[MAX_PATH]; - + + TRACE("sf=%p file=%s\n", psf, lpcstrFileName); if(!lpcstrFileName) return NULL; diff --git a/dlls/commdlg/filedlgbrowser.c b/dlls/commdlg/filedlgbrowser.c index 890cc2979848a943e67e1a7b05e8f91f5ddede9a..51b3fd268617ffcacb8b2b378ad567a1481414af 100644 --- a/dlls/commdlg/filedlgbrowser.c +++ b/dlls/commdlg/filedlgbrowser.c @@ -8,6 +8,7 @@ #include "unknwn.h" #include "filedlgbrowser.h" #include "winuser.h" +#include "heap.h" #include "commctrl.h" #include "wine/obj_dataobject.h" #include "debugtools.h" @@ -674,7 +675,7 @@ HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_IncludeObject(ICommDlgBrowser * FileOpenDlgInfos *fodInfos; ULONG ulAttr; STRRET str; - char szPath[MAX_PATH]; + WCHAR szPathW[MAX_PATH]; _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface); @@ -696,9 +697,16 @@ HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_IncludeObject(ICommDlgBrowser * if(!fodInfos->ShellInfos.lpstrCurrentFilter || !lstrlenW(fodInfos->ShellInfos.lpstrCurrentFilter)) return S_OK; - IShellFolder_GetDisplayNameOf(fodInfos->Shell.FOIShellFolder, pidl, SHGDN_FORPARSING, &str); - StrRetToStrN(szPath, MAX_PATH, &str, pidl); - return PathMatchSpecW((LPWSTR)szPath, fodInfos->ShellInfos.lpstrCurrentFilter)? S_OK : S_FALSE; + + if (SUCCEEDED(IShellFolder_GetDisplayNameOf(fodInfos->Shell.FOIShellFolder, pidl, SHGDN_FORPARSING, &str))) + { if (SUCCEEDED(StrRetToStrNW(szPathW, MAX_PATH, &str, pidl))) + { + if (PathMatchSpecW(szPathW, fodInfos->ShellInfos.lpstrCurrentFilter)) + return S_OK; + } + } + return S_FALSE; + } /************************************************************************** @@ -724,7 +732,7 @@ HRESULT IShellBrowserImpl_ICommDlgBrowser_OnSelChange(ICommDlgBrowser *iface, IS if (!ulAttr) { if(SUCCEEDED(hRes = GetName(fodInfos->Shell.FOIShellFolder,pidl,SHGDN_NORMAL,lpstrFileName))) - SetWindowTextW(fodInfos->DlgInfos.hwndFileName,(LPWSTR)lpstrFileName); + SetWindowTextA(fodInfos->DlgInfos.hwndFileName,lpstrFileName); } SHFree((LPVOID)pidl); diff --git a/dlls/shell32/brsfolder.c b/dlls/shell32/brsfolder.c index 45a00471a4344a53cdc9d5f830cc2e0137f268ed..5b20c0f254479bc7f32efae46df5f0ca43453573 100644 --- a/dlls/shell32/brsfolder.c +++ b/dlls/shell32/brsfolder.c @@ -89,7 +89,8 @@ static BOOL GetName(LPSHELLFOLDER lpsf, LPITEMIDLIST lpi, DWORD dwFlags, LPSTR l TRACE("%p %p %lx %p\n", lpsf, lpi, dwFlags, lpFriendlyName); if (SUCCEEDED(IShellFolder_GetDisplayNameOf(lpsf, lpi, dwFlags, &str))) - { bSuccess = StrRetToStrN (lpFriendlyName, MAX_PATH, &str, lpi); + { + bSuccess = StrRetToStrNA (lpFriendlyName, MAX_PATH, &str, lpi); } else bSuccess = FALSE;