From: Pádraig Brady <P@draigBrady.com> 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=8500cca21c04fb2ae24f27af4f3d270040e511b0;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 562628d22b..56a3a07ff9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2024-11-19 Pádraig Brady <P@draigBrady.com> + + 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 <bruno@clisp.org> stdlib: Adjust warning about function 'free'. diff --git a/lib/unicodeio.c b/lib/unicodeio.c index 9ed3875f93..b3321bb918 100644 --- a/lib/unicodeio.c +++ b/lib/unicodeio.c @@ -224,9 +224,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); }