diff --git a/dlls/shlwapi/path.c b/dlls/shlwapi/path.c index b2005c1e787..ae9c9918316 100644 --- a/dlls/shlwapi/path.c +++ b/dlls/shlwapi/path.c @@ -2344,7 +2344,12 @@ BOOL WINAPI PathCanonicalizeA(LPSTR lpszBuf, LPCSTR lpszPath) { WCHAR szPath[MAX_PATH]; WCHAR szBuff[MAX_PATH]; - MultiByteToWideChar(CP_ACP,0,lpszPath,-1,szPath,MAX_PATH); + int ret = MultiByteToWideChar(CP_ACP,0,lpszPath,-1,szPath,MAX_PATH); + + if (!ret) { + WARN("Failed to convert string to widechar (too long?), LE %d.\n", GetLastError()); + return FALSE; + } bRet = PathCanonicalizeW(szBuff, szPath); WideCharToMultiByte(CP_ACP,0,szBuff,-1,lpszBuf,MAX_PATH,0,0); } diff --git a/dlls/shlwapi/tests/path.c b/dlls/shlwapi/tests/path.c index 82112a5c838..b2d2a9ea7b1 100644 --- a/dlls/shlwapi/tests/path.c +++ b/dlls/shlwapi/tests/path.c @@ -908,9 +908,9 @@ static void test_PathCanonicalizeA(void) lstrcpy(dest, "test"); SetLastError(0xdeadbeef); res = PathCanonicalizeA(dest, too_long); + ok(!res, "Expected failure\n"); todo_wine { - ok(!res, "Expected failure\n"); ok(GetLastError() == 0xdeadbeef, "Expected 0xdeadbeef, got %d\n", GetLastError()); } ok(lstrlen(too_long) == LONG_LEN - 1, "Expected length LONG_LEN - 1, got %i\n", lstrlen(too_long));