From 19e9a441183d907540bb22f8711db281334467b9 Mon Sep 17 00:00:00 2001 From: Mark Jansen Date: Sun, 26 Aug 2018 22:38:27 +0200 Subject: [PATCH] [SHELL32] Check the result from PathUnExpandEnvStringsW --- dll/win32/shell32/CShellLink.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dll/win32/shell32/CShellLink.cpp b/dll/win32/shell32/CShellLink.cpp index 2b6b20020d9..5afc4b715eb 100644 --- a/dll/win32/shell32/CShellLink.cpp +++ b/dll/win32/shell32/CShellLink.cpp @@ -1856,6 +1856,7 @@ HRESULT STDMETHODCALLTYPE CShellLink::SetIconLocation(LPCWSTR pszIconPath, INT i { HRESULT hr = E_FAIL; WCHAR szUnExpIconPath[MAX_PATH]; + BOOL bSuccess; TRACE("(%p)->(path=%s iicon=%u)\n", this, debugstr_w(pszIconPath), iIcon); @@ -1875,8 +1876,8 @@ HRESULT STDMETHODCALLTYPE CShellLink::SetIconLocation(LPCWSTR pszIconPath, INT i */ // FIXME: http://stackoverflow.com/questions/2976489/ishelllinkseticonlocation-translates-my-icon-path-into-program-files-which-i // if (PathFullyUnExpandEnvStringsW(pszIconPath, szUnExpIconPath, _countof(szUnExpIconPath))) - PathUnExpandEnvStringsW(pszIconPath, szUnExpIconPath, _countof(szUnExpIconPath)); - if (wcscmp(pszIconPath, szUnExpIconPath) != 0) + bSuccess = PathUnExpandEnvStringsW(pszIconPath, szUnExpIconPath, _countof(szUnExpIconPath)); + if (bSuccess && wcscmp(pszIconPath, szUnExpIconPath) != 0) { /* Unexpansion succeeded, so we need an icon environment block */ EXP_SZ_LINK buffer; -- 2.17.1