Commit 464c956a authored by Alexandre Julliard's avatar Alexandre Julliard

libwine: Fix the wctomb validity check for codepages where the default chars…

libwine: Fix the wctomb validity check for codepages where the default chars don't convert to each other.
parent c6570a50
...@@ -69,9 +69,9 @@ WCHAR compose( const WCHAR *str ) ...@@ -69,9 +69,9 @@ WCHAR compose( const WCHAR *str )
static inline int is_valid_sbcs_mapping( const struct sbcs_table *table, int flags, static inline int is_valid_sbcs_mapping( const struct sbcs_table *table, int flags,
WCHAR wch, unsigned char ch ) WCHAR wch, unsigned char ch )
{ {
if (flags & WC_NO_BEST_FIT_CHARS) return (table->cp2uni[ch] == wch); if ((flags & WC_NO_BEST_FIT_CHARS) || ch == (unsigned char)table->info.def_char)
if (ch != (unsigned char)table->info.def_char) return 1; return (table->cp2uni[ch] == wch);
return (wch == table->info.def_unicode_char); return 1;
} }
/* query necessary dst length for src string */ /* query necessary dst length for src string */
...@@ -262,8 +262,7 @@ static int wcstombs_sbcs_slow( const struct sbcs_table *table, int flags, ...@@ -262,8 +262,7 @@ static int wcstombs_sbcs_slow( const struct sbcs_table *table, int flags,
static inline int is_valid_dbcs_mapping( const struct dbcs_table *table, int flags, static inline int is_valid_dbcs_mapping( const struct dbcs_table *table, int flags,
WCHAR wch, unsigned short ch ) WCHAR wch, unsigned short ch )
{ {
if (ch == table->info.def_char && wch != table->info.def_unicode_char) return 0; if ((flags & WC_NO_BEST_FIT_CHARS) || ch == table->info.def_char)
if (flags & WC_NO_BEST_FIT_CHARS)
{ {
/* check if char maps back to the same Unicode value */ /* check if char maps back to the same Unicode value */
if (ch & 0xff00) if (ch & 0xff00)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment