diff --git a/reactos/lib/kernel32/file/create.c b/reactos/lib/kernel32/file/create.c index f9046a35254..67ccd9bf4c9 100644 --- a/reactos/lib/kernel32/file/create.c +++ b/reactos/lib/kernel32/file/create.c @@ -34,26 +34,15 @@ HANDLE STDCALL CreateFileA (LPCSTR lpFileName, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) { - UNICODE_STRING FileNameU; - ANSI_STRING FileName; + PWCHAR FileNameW; HANDLE FileHandle; DPRINT("CreateFileA(lpFileName %s)\n",lpFileName); - RtlInitAnsiString (&FileName, - (LPSTR)lpFileName); - - /* convert ansi (or oem) string to unicode */ - if (bIsFileApiAnsi) - RtlAnsiStringToUnicodeString (&FileNameU, - &FileName, - TRUE); - else - RtlOemStringToUnicodeString (&FileNameU, - &FileName, - TRUE); + if (!(FileNameW = FilenameA2W(lpFileName, FALSE))) + return INVALID_HANDLE_VALUE; - FileHandle = CreateFileW (FileNameU.Buffer, + FileHandle = CreateFileW (FileNameW, dwDesiredAccess, dwShareMode, lpSecurityAttributes, @@ -61,10 +50,6 @@ HANDLE STDCALL CreateFileA (LPCSTR lpFileName, dwFlagsAndAttributes, hTemplateFile); - RtlFreeHeap (RtlGetProcessHeap (), - 0, - FileNameU.Buffer); - return FileHandle; }