Fix Rust lex selftest when using libiconv

The Rust lex selftest fails on our Windows build.  I tracked this down
to a use of UTF-32 as a parameter to convert_between_encodings.  Here,
iconv_open succeeds, but the actual conversion of a tab character
fails with EILSEQ.  I suspect that "UTF-32" is being interpreted as
big-endian, as changing the call to use "UTF-32LE" makes it work.
This patch implements this fix.
This commit is contained in:
Tom Tromey 2021-09-30 12:53:55 -06:00
parent 5dfe4bfcb9
commit 775d36a916

View File

@ -695,9 +695,16 @@ rust_parser::lex_string ()
if (is_byte)
obstack_1grow (&obstack, value);
else
convert_between_encodings ("UTF-32", "UTF-8", (gdb_byte *) &value,
sizeof (value), sizeof (value),
&obstack, translit_none);
{
#if WORDS_BIGENDIAN
#define UTF32 "UTF-32BE"
#else
#define UTF32 "UTF-32LE"
#endif
convert_between_encodings (UTF32, "UTF-8", (gdb_byte *) &value,
sizeof (value), sizeof (value),
&obstack, translit_none);
}
}
else if (pstate->lexptr[0] == '\0')
error (_("Unexpected EOF in string"));