[builds/windows] Try both wide and narrow `CreateFile`
Windows handles wchar_t* UTF-16 and char* ANSI (presently UTF-8) filenames using alternative -A and -W API. We'll try them both when opening a file. This means that you should not worry about about conversions. Fixes #1098 and !76. * builds/windows/ftsystem.c (FT_Stream_Open): Call alternative `CreateFile` in the case of failure.
This commit is contained in:
parent
6e1ef98a04
commit
0b429b609c
|
@ -215,9 +215,21 @@
|
|||
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );
|
||||
if ( file == INVALID_HANDLE_VALUE )
|
||||
{
|
||||
FT_ERROR(( "FT_Stream_Open:" ));
|
||||
FT_ERROR(( " could not open `%s'\n", filepathname ));
|
||||
return FT_THROW( Cannot_Open_Resource );
|
||||
/* fall back on the alernative interface */
|
||||
#ifdef UNICODE
|
||||
file = CreateFileA( (LPCSTR)filepathname, GENERIC_READ, FILE_SHARE_READ,
|
||||
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );
|
||||
#else
|
||||
file = CreateFileW( (LPCWSTR)filepathname, GENERIC_READ, FILE_SHARE_READ,
|
||||
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );
|
||||
#endif
|
||||
|
||||
if ( file == INVALID_HANDLE_VALUE )
|
||||
{
|
||||
FT_ERROR(( "FT_Stream_Open:" ));
|
||||
FT_ERROR(( " could not open `%s'\n", filepathname ));
|
||||
return FT_THROW( Cannot_Open_Resource );
|
||||
}
|
||||
}
|
||||
|
||||
#if defined _WIN32_WCE || defined _WIN32_WINDOWS || \
|
||||
|
|
Loading…
Reference in New Issue