From aa034817eb70a592cfb00d2475cd2601aa36e431 Mon Sep 17 00:00:00 2001 From: =?utf8?q?P=C3=A1draig=20Brady?= Date: Tue, 19 Nov 2024 18:11:21 +0000 Subject: [PATCH] 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 --- ChangeLog | 8 ++++++++ lib/unicodeio.c | 18 +++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 71106fcc6d..7ea28b4f95 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 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); } -- 2.39.5