X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fdll%2Fwin32%2Fkernel32%2Fclient%2Ffile%2Fcreate.c;h=a633f3795bfa84350df95503a2d8002dac4ff617;hp=f823f1f8a14a311eefee09e66366833ae01a17ab;hb=298e2fb71cf21c3400c38dbf30715553df7a188f;hpb=84b6e377ec1151589ae5abad80fc5b6fdf0fbf81 diff --git a/reactos/dll/win32/kernel32/client/file/create.c b/reactos/dll/win32/kernel32/client/file/create.c index f823f1f8a14..a633f3795bf 100644 --- a/reactos/dll/win32/kernel32/client/file/create.c +++ b/reactos/dll/win32/kernel32/client/file/create.c @@ -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);