Module: wine Branch: master Commit: f333bf47a8077ecf634163c8a67dc2502ca8295c URL: http://source.winehq.org/git/wine.git/?a=commit;h=f333bf47a8077ecf634163c8a6...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Jul 28 14:24:05 2016 +0200
ntdll: Keep drive letter size in RtlGetFullPathName_U when full path is specified.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/path.c | 2 +- dlls/ntdll/tests/path.c | 9 +++++---- dlls/shell32/tests/shelllink.c | 2 +- programs/cmd/tests/test_builtins.cmd.exp | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/dlls/ntdll/path.c b/dlls/ntdll/path.c index ae0646a..ac4807f 100644 --- a/dlls/ntdll/path.c +++ b/dlls/ntdll/path.c @@ -625,7 +625,7 @@ static ULONG get_full_path_helper(LPCWSTR name, LPWSTR buffer, ULONG size)
case ABSOLUTE_DRIVE_PATH: /* c:\foo */ reqsize = sizeof(WCHAR); - tmp[0] = toupperW(name[0]); + tmp[0] = name[0]; ins_str = tmp; dep = 1; mark = 3; diff --git a/dlls/ntdll/tests/path.c b/dlls/ntdll/tests/path.c index cc7259e..c19189d 100644 --- a/dlls/ntdll/tests/path.c +++ b/dlls/ntdll/tests/path.c @@ -265,7 +265,7 @@ static void test_RtlGetFullPathName_U(void) { "c:/test/ .... .. ", "c:\test\", NULL}, { "c:/test/..", "c:\", NULL}, { "c:/test/.. ", "c:\test\", NULL}, - { "c:/TEST", "c:\test", "test"}, + { "c:/TEST", "c:\TEST", "TEST"}, { "c:/test/file", "c:\test\file", "file"}, { "c:/test./file", "c:\test\file", "file"}, { "c:/test.. /file", "c:\test.. \file","file"}, @@ -279,6 +279,7 @@ static void test_RtlGetFullPathName_U(void) { "c:///test\..\file\..\//", "c:\", NULL}, { "c:/test../file", "c:\test.\file", "file", "c:\test..\file", "file"}, /* vista */ + { "c:\test", "c:\test", "test"}, { NULL, NULL, NULL} };
@@ -325,14 +326,14 @@ static void test_RtlGetFullPathName_U(void) "Wrong result %d/%d for "%s"\n", ret, len, test->path ); ok(pRtlUnicodeToMultiByteN(rbufferA,MAX_PATH,&reslen,rbufferW,(lstrlenW(rbufferW) + 1) * sizeof(WCHAR)) == STATUS_SUCCESS, "RtlUnicodeToMultiByteN failed\n"); - ok(!lstrcmpiA(rbufferA,test->rname) || (test->alt_rname && !lstrcmpiA(rbufferA,test->alt_rname)), + ok(!lstrcmpA(rbufferA,test->rname) || (test->alt_rname && !lstrcmpA(rbufferA,test->alt_rname)), "Got "%s" expected "%s"\n",rbufferA,test->rname); if (file_part) { ok(pRtlUnicodeToMultiByteN(rfileA,MAX_PATH,&reslen,file_part,(lstrlenW(file_part) + 1) * sizeof(WCHAR)) == STATUS_SUCCESS, "RtlUnicodeToMultiByteN failed\n"); - ok((test->rfile && !lstrcmpiA(rfileA,test->rfile)) || - (test->alt_rfile && !lstrcmpiA(rfileA,test->alt_rfile)), + ok((test->rfile && !lstrcmpA(rfileA,test->rfile)) || + (test->alt_rfile && !lstrcmpA(rfileA,test->alt_rfile)), "Got "%s" expected "%s"\n",rfileA,test->rfile); } else diff --git a/dlls/shell32/tests/shelllink.c b/dlls/shell32/tests/shelllink.c index f7c091e..8af3c97 100644 --- a/dlls/shell32/tests/shelllink.c +++ b/dlls/shell32/tests/shelllink.c @@ -248,7 +248,7 @@ static void test_get_set(void) strcpy(buffer,"garbage"); r = IShellLinkA_GetPath(sl, buffer, sizeof(buffer), NULL, SLGP_RAWPATH); ok(r==S_OK, "GetPath failed (0x%08x)\n", r); - ok(!strcmp(buffer, "C:\nonexistent\file") || + todo_wine ok(!strcmp(buffer, "C:\nonexistent\file") || broken(!strcmp(buffer, "C:\"c:\nonexistent\file"")), /* NT4 */ "case doesn't match\n");
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 82b13f7..67e75e0 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -980,7 +980,7 @@ a d a C r foo bar baz -@todo_wine@c:\ +c:\ ------ skip option c no output