From 41b2296ac0d125cc9e0966976c019aaecbf44bb7 Mon Sep 17 00:00:00 2001 From: Nicolas Le Cam Date: Sun, 26 Jul 2009 22:35:34 +0200 Subject: [PATCH] shell32/tests: Add test for shell links to short path containing double backslashes. --- dlls/shell32/tests/shelllink.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/dlls/shell32/tests/shelllink.c b/dlls/shell32/tests/shelllink.c index 3ab37668159..15a93db00e4 100644 --- a/dlls/shell32/tests/shelllink.c +++ b/dlls/shell32/tests/shelllink.c @@ -48,6 +48,7 @@ static fnSHILCreateFromPath pSHILCreateFromPath; static fnSHDefExtractIconA pSHDefExtractIconA; static DWORD (WINAPI *pGetLongPathNameA)(LPCSTR, LPSTR, DWORD); +static DWORD (WINAPI *pGetShortPathNameA)(LPCSTR, LPSTR, DWORD); static const GUID _IID_IShellLinkDataList = { 0x45e2b4ae, 0xb1c3, 0x11d0, @@ -223,6 +224,7 @@ static void test_get_set(void) r = IShellLinkA_SetPath(sl, "\"c:\\nonexistent\\file\""); ok(r==S_FALSE || r == S_OK, "SetPath failed (0x%08x)\n", r); + strcpy(buffer,"garbage"); r = IShellLinkA_GetPath(sl, buffer, sizeof(buffer), NULL, SLGP_RAWPATH); ok(r==S_OK, "GetPath failed (0x%08x)\n", r); ok(!lstrcmp(buffer, "C:\\nonexistent\\file") || @@ -615,6 +617,25 @@ static void test_load_save(void) create_lnk(lnkfile, &desc, 0); check_lnk(lnkfile, &desc, 0x0); + r=pGetShortPathNameA(mydir, mypath, sizeof(mypath)); + strcpy(realpath, mypath); + strcat(realpath, "\\test.txt"); + strcat(mypath, "\\\\test.txt"); + + /* Overwrite the existing lnk file and test link to a short path with double backslashes */ + desc.description="non-executable file"; + desc.workdir=mydir; + desc.path=mypath; + desc.pidl=NULL; + desc.arguments=""; + desc.showcmd=SW_SHOWNORMAL; + desc.icon=mypath; + desc.icon_id=0; + desc.hotkey=0x1234; + create_lnk(lnkfile, &desc, 0); + desc.path=realpath; + check_lnk(lnkfile, &desc, 0x0); + r = DeleteFileA(mypath); ok(r, "failed to delete file %s (%d)\n", mypath, GetLastError()); @@ -750,6 +771,7 @@ START_TEST(shelllink) pSHDefExtractIconA = (fnSHDefExtractIconA) GetProcAddress(hmod, "SHDefExtractIconA"); pGetLongPathNameA = (void *)GetProcAddress(hkernel32, "GetLongPathNameA"); + pGetShortPathNameA = (void *)GetProcAddress(hkernel32, "GetShortPathNameA"); r = CoInitialize(NULL); ok(SUCCEEDED(r), "CoInitialize failed (0x%08x)\n", r); -- 2.11.4.GIT