From: Pádraig Brady Date: Tue, 19 Nov 2024 18:11:21 +0000 (+0000) Subject: unicodeio: avoid iconv issues for most ASCII characters X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=e5b82978e2948920a8902a1237ae4ab2dd1ecb8d;p=gnulib.git unicodeio: avoid iconv issues for most ASCII characters * lib/unicodeio.c (print_unicode_char): Avoid unicode_to_mb() for most ASCII characters, to avoid iconv() issues which were seen on macOS. Addresses https://bugs.gnu.org/74428 --- diff --git a/ChangeLog b/ChangeLog index bf5f6381c1..c4b2290d6c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2024-11-19 Pádraig Brady + + unicodeio: avoid iconv issues for most ASCII characters + * lib/unicodeio.c (print_unicode_char): Avoid unicode_to_mb() + for mose ASCII characters, to avoid iconv() issues + which were seen on macOS. + Addresses https://bugs.gnu.org/74428 + 2024-11-19 Bruno Haible stdlib: Adjust warning about function 'free'. diff --git a/lib/unicodeio.c b/lib/unicodeio.c index e93f86ecba..47e6e2b907 100644 --- a/lib/unicodeio.c +++ b/lib/unicodeio.c @@ -217,9 +217,17 @@ fallback_failure_callback (unsigned int code, void print_unicode_char (FILE *stream, unsigned int code, int exit_on_error) { - unicode_to_mb (code, fwrite_success_callback, - exit_on_error - ? exit_failure_callback - : fallback_failure_callback, - stream); + /* Simplify this subset to avoid potential iconv() issues + for that range at least. */ + if (32 <= code && code < 128) + { + char code_char = code; + fwrite_success_callback (&code_char, sizeof code_char, stream); + } + else + unicode_to_mb (code, fwrite_success_callback, + exit_on_error + ? exit_failure_callback + : fallback_failure_callback, + stream); }