https://git.reactos.org/?p=reactos.git;a=commitdiff;h=7ee298bbfc3838e7fbf92d...
commit 7ee298bbfc3838e7fbf92d775206ca9f4d0c38dc Author: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org AuthorDate: Sun Sep 23 00:07:07 2018 +0200 Commit: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org CommitDate: Sun Sep 23 00:18:57 2018 +0200
[SHELL32] In _SHExpandEnvironmentStrings(), fall back to SHExpandEnvironmentStringsForUserW() if the simplified code paths failed.
This allows the code to give a last chance for expanding the string. And if it still fails, we bail out as expected and the caller will take appropriate actions.
As a by-product, this commit (together with the previous one e2960914) fixes the regression CORE-14981 (Quick-Launch bar couldn't be opened in LiveCD). --- dll/win32/shell32/wine/shellpath.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/dll/win32/shell32/wine/shellpath.c b/dll/win32/shell32/wine/shellpath.c index 96e47b288a..b247fd3bf3 100644 --- a/dll/win32/shell32/wine/shellpath.c +++ b/dll/win32/shell32/wine/shellpath.c @@ -1986,7 +1986,7 @@ static HRESULT _SHExpandEnvironmentStrings(HANDLE hToken, LPCWSTR szSrc, LPWSTR #else DWORD cchSize = cchDest; if (!GetAllUsersProfileDirectoryW(szDest, &cchSize)) - return HRESULT_FROM_WIN32(GetLastError()); + goto fallback_expand; #endif PathAppendW(szDest, szTemp + strlenW(AllUsersProfileW)); } @@ -2015,7 +2015,7 @@ static HRESULT _SHExpandEnvironmentStrings(HANDLE hToken, LPCWSTR szSrc, LPWSTR #else DWORD cchSize = cchDest; if (!_SHGetUserProfileDirectoryW(hToken, szDest, &cchSize)) - return HRESULT_FROM_WIN32(GetLastError()); + goto fallback_expand; #endif PathAppendW(szDest, szTemp + strlenW(UserProfileW)); } @@ -2025,16 +2025,19 @@ static HRESULT _SHExpandEnvironmentStrings(HANDLE hToken, LPCWSTR szSrc, LPWSTR GetSystemDirectoryW(szDest, MAX_PATH); #else if (!GetSystemDirectoryW(szDest, cchDest)) - return HRESULT_FROM_WIN32(GetLastError()); + goto fallback_expand; #endif strcpyW(szDest + 3, szTemp + strlenW(SystemDriveW) + 1); } else +#ifdef __REACTOS__ +fallback_expand: +#endif { #ifndef __REACTOS__ DWORD ret = ExpandEnvironmentStringsW(szTemp, szDest, MAX_PATH); #else - DWORD ret = SHExpandEnvironmentStringsForUserW(hToken, szSrc, szDest, cchDest); + DWORD ret = SHExpandEnvironmentStringsForUserW(hToken, szTemp, szDest, cchDest); #endif
#ifndef __REACTOS__