diff --git a/dlls/comdlg32/filedlg.c b/dlls/comdlg32/filedlg.c index 8dda4f7712b..d76fad925ae 100644 --- a/dlls/comdlg32/filedlg.c +++ b/dlls/comdlg32/filedlg.c @@ -504,15 +504,17 @@ static BOOL GetFileDialog95W(LPOPENFILENAMEW ofn,UINT iDlgType) else fodInfos.filename = NULL; + fodInfos.initdir = NULL; if(ofn->lpstrInitialDir) { /* fodInfos.initdir = strdupW(ofn->lpstrInitialDir); */ - DWORD len = lstrlenW(ofn->lpstrInitialDir)+1; - fodInfos.initdir = MemAlloc(len*sizeof(WCHAR)); - memcpy(fodInfos.initdir,ofn->lpstrInitialDir,len*sizeof(WCHAR)); + DWORD len = ExpandEnvironmentStringsW(ofn->lpstrInitialDir, NULL, 0); + if (len) + { + fodInfos.initdir = MemAlloc(len * sizeof(WCHAR)); + ExpandEnvironmentStringsW(ofn->lpstrInitialDir, fodInfos.initdir, len); + } } - else - fodInfos.initdir = NULL; /* save current directory */ if (ofn->Flags & OFN_NOCHANGEDIR)