https://git.reactos.org/?p=reactos.git;a=commitdiff;h=7ee298bbfc3838e7fbf92…
commit 7ee298bbfc3838e7fbf92d775206ca9f4d0c38dc
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Sun Sep 23 00:07:07 2018 +0200
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)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__