[KERNEL32]
authorPierre Schweitzer <pierre@reactos.org>
Sun, 26 Feb 2017 14:06:50 +0000 (14:06 +0000)
committerPierre Schweitzer <pierre@reactos.org>
Sun, 26 Feb 2017 14:06:50 +0000 (14:06 +0000)
Fix handling of trailing backslash.
Patch by Thomas Faber.

ROSTESTS-135

svn path=/trunk/; revision=73925

reactos/dll/win32/kernel32/client/file/create.c

index f823f1f..a633f37 100644 (file)
@@ -104,6 +104,7 @@ HANDLE WINAPI CreateFileW (LPCWSTR                  lpFileName,
    ULONG FileAttributes, Flags = 0;
    PVOID EaBuffer = NULL;
    ULONG EaLength = 0;
+   BOOLEAN TrailingBackslash;
 
    if (!lpFileName || !lpFileName[0])
    {
@@ -220,6 +221,13 @@ HANDLE WINAPI CreateFileW (LPCWSTR                 lpFileName,
    }
 
    TRACE("NtPathU \'%wZ\'\n", &NtPathU);
+   
+   TrailingBackslash = FALSE;
+   if (NtPathU.Length >= sizeof(WCHAR) &&
+       NtPathU.Buffer[NtPathU.Length / sizeof(WCHAR) - 1])
+   {
+      TrailingBackslash = TRUE;
+   }
 
    if (hTemplateFile != NULL)
    {
@@ -350,6 +358,11 @@ HANDLE WINAPI CreateFileW (LPCWSTR                 lpFileName,
       {
          SetLastError( ERROR_FILE_EXISTS );
       }
+      else if (Status == STATUS_FILE_IS_A_DIRECTORY &&
+               TrailingBackslash)
+      {
+         SetLastError(ERROR_PATH_NOT_FOUND);
+      }
       else
       {
          BaseSetLastNTError (Status);