Module: wine Branch: master Commit: b585b24397f93b3a323b2f3674b4b5d61bc035a6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b585b24397f93b3a323b2f3674...
Author: Damjan Jovanovic damjan.jov@gmail.com Date: Mon Nov 23 21:43:42 2009 +0200
shell32: Deal better with spaces in ASSOCSTR_COMMAND values.
---
dlls/shell32/assoc.c | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/dlls/shell32/assoc.c b/dlls/shell32/assoc.c index bf9ccb9..85efa07 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);