groff-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[groff] 13/15: [troff]: Don't write incomp UTF-8 seqs in diags.


From: G. Branden Robinson
Subject: [groff] 13/15: [troff]: Don't write incomp UTF-8 seqs in diags.
Date: Tue, 16 Jul 2024 08:40:03 -0400 (EDT)

gbranden pushed a commit to branch master
in repository groff.

commit 5cab1363e47c0891a7dce003db053ce15f5722a0
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
AuthorDate: Mon Jul 15 17:32:45 2024 -0500

    [troff]: Don't write incomp UTF-8 seqs in diags.
    
    * src/roff/troff/input.cpp (token::description): Revise diagnostic when
      reporting unexpected character code > 128 in input.  Report only its
      code in decimal and Unicode-style hexadecimal instead of trying to
      write it literally.
    
    Continues <https://savannah.gnu.org/bugs/?65724>.
---
 ChangeLog                | 9 +++++++++
 src/roff/troff/input.cpp | 8 ++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 3db697a19..e18ceb871 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2024-07-15  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/roff/troff/input.cpp (token::description): Revise
+       diagnostic when reporting unexpected character code > 128 in
+       input.  Report only its code in decimal and Unicode-style
+       hexadecimal instead of trying to write it literally.
+
+       Continues <https://savannah.gnu.org/bugs/?65724>.
+
 2024-07-14  G. Branden Robinson <g.branden.robinson@gmail.com>
 
        * doc/pic.ms: Reduce vertical spacing in displays only on
diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp
index c558b8681..cc90eda1c 100644
--- a/src/roff/troff/input.cpp
+++ b/src/roff/troff/input.cpp
@@ -2545,7 +2545,7 @@ bool token::is_usable_as_delimiter(bool report_error)
 
 const char *token::description()
 {
-  const size_t bufsz = sizeof "character 'x'" + 1;
+  const size_t bufsz = sizeof "character code XXX (U+XXXX)" + 1;
   static char buf[bufsz];
   (void) memset(buf, 0, bufsz);
   switch (type) {
@@ -2558,10 +2558,14 @@ const char *token::description()
       (void) snprintf(buf, bufsz, "character \"%c\"", c);
       return buf;
     }
-    else {
+    else if (c < 128) {
       (void) snprintf(buf, bufsz, "character '%c'", c);
       return buf;
     }
+    else {
+      (void) snprintf(buf, bufsz, "character code %d (U+%04X)", c, c);
+      return buf;
+    }
   case TOKEN_DUMMY:
     return "an escaped '&'";
   case TOKEN_ESCAPE:



reply via email to

[Prev in Thread] Current Thread [Next in Thread]