From b585b24397f93b3a323b2f3674b4b5d61bc035a6 Mon Sep 17 00:00:00 2001 From: Damjan Jovanovic Date: Mon, 23 Nov 2009 21:43:42 +0200 Subject: [PATCH] shell32: Deal better with spaces in ASSOCSTR_COMMAND values. --- dlls/shell32/assoc.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/dlls/shell32/assoc.c b/dlls/shell32/assoc.c index bf9ccb97f39..85efa07451c 100644 --- a/dlls/shell32/assoc.c +++ b/dlls/shell32/assoc.c @@ -320,16 +320,25 @@ static HRESULT ASSOC_GetExecutable(IQueryAssociationsImpl *This, { pszStart = pszCommand + 1; pszEnd = strchrW(pszStart, '"'); + if (pszEnd) + *pszEnd = 0; + *len = SearchPathW(NULL, pszStart, NULL, pathlen, path, NULL); } else { pszStart = pszCommand; - pszEnd = strchrW(pszStart, ' '); + for (pszEnd = pszStart; (pszEnd = strchrW(pszEnd, ' ')); pszEnd++) + { + WCHAR c = *pszEnd; + *pszEnd = 0; + if ((*len = SearchPathW(NULL, pszStart, NULL, pathlen, path, NULL))) + break; + *pszEnd = c; + } + if (!pszEnd) + *len = SearchPathW(NULL, pszStart, NULL, pathlen, path, NULL); } - if (pszEnd) - *pszEnd = 0; - *len = SearchPathW(NULL, pszStart, NULL, pathlen, path, NULL); HeapFree(GetProcessHeap(), 0, pszCommand); if (!*len) return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND); -- 2.11.4.GIT