>From 2f3b38e0d7f02352d07b4c14201808feba45b599 Mon Sep 17 00:00:00 2001 From: Stephen M Smith Date: Tue, 20 Jul 2010 15:32:14 +0100 Subject: GetVolumeInformationW no error on no trailing \ when current dir is root dir --- dlls/kernel32/tests/volume.c | 1 - dlls/kernel32/volume.c | 12 +++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/dlls/kernel32/tests/volume.c b/dlls/kernel32/tests/volume.c index b3b4429..4e5240c 100644 --- a/dlls/kernel32/tests/volume.c +++ b/dlls/kernel32/tests/volume.c @@ -337,7 +337,6 @@ static void test_GetVolumeInformationA(void) ok(ret, "SetCurrentDirectory: error %d\n", GetLastError()); ret = pGetVolumeInformationA(Root_Dir0, vol_name_buf, vol_name_size, NULL, NULL, NULL, fs_name_buf, fs_name_len); - todo_wine ok(ret, "GetVolumeInformationA failed, last error %u\n", GetLastError()); /* check for error on no trailing \ when current dir is windows dir */ diff --git a/dlls/kernel32/volume.c b/dlls/kernel32/volume.c index 7596864..3198421 100644 --- a/dlls/kernel32/volume.c +++ b/dlls/kernel32/volume.c @@ -526,10 +526,16 @@ BOOL WINAPI GetVolumeInformationW( LPCWSTR root, LPWSTR label, DWORD label_len, } else { - if (!root[0] || root[1] != ':' || root[lstrlenW(root)-1] != '\\' ) + if (!isalphaW(root[0]) || root[1] != ':' || root[lstrlenW(root)-1] != '\\') { - SetLastError( ERROR_INVALID_NAME ); - return FALSE; + WCHAR curpath[MAX_PATH]; + GetCurrentDirectoryW(MAX_PATH,curpath); + + if(lstrlenW(curpath) > 3) + { + SetLastError( ERROR_INVALID_NAME ); + return FALSE; + } } device[4] = root[0]; } -- 1.7.0.4