]> Savannah Git Hosting - gnulib.git/commitdiff
unicodeio: avoid iconv issues for most ASCII characters
authorPádraig Brady <P@draigBrady.com>
Tue, 19 Nov 2024 18:11:21 +0000 (18:11 +0000)
committerBruno Haible <bruno@clisp.org>
Sun, 1 Dec 2024 06:59:15 +0000 (07:59 +0100)
* 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
lib/unicodeio.c

index 71106fcc6dbbee35831840d2597f8579d0cb3bff..7ea28b4f95384cf0de7a939ba350999189e9c4e9 100644 (file)
--- 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'.
index 9ed3875f93900d488b27643446e35e2b9368e56a..b3321bb9187a6d8ef589e4505544cd16bcf2607c 100644 (file)
@@ -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);
 }