]> 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)
committerPádraig Brady <P@draigBrady.com>
Tue, 19 Nov 2024 19:52:50 +0000 (19:52 +0000)
* 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 bf5f6381c1a6ac2ab64a17adb0a8ec4b1088cbde..c4b2290d6cf94c750c6d49ed0fb5dbc0f636974d 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 e93f86ecbac5c91fe96821898f508ecc6044a276..47e6e2b907cdb4f20476fdc013d8ecd1ad3d39a4 100644 (file)
@@ -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);
 }