groff-commit
[Top][All Lists]
Advanced

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

[groff] 14/14: [tbl]: Fix Savannah #65225.


From: G. Branden Robinson
Subject: [groff] 14/14: [tbl]: Fix Savannah #65225.
Date: Mon, 29 Jan 2024 21:13:49 -0500 (EST)

gbranden pushed a commit to branch master
in repository groff.

commit 6a99160c8359aff04880295c6d37586e80298f5a
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
AuthorDate: Mon Jan 29 19:46:48 2024 -0600

    [tbl]: Fix Savannah #65225.
    
    * src/preproc/tbl/table.cpp (table::add_entry): Fix regression in
      repeated glyph tbl(1) feature (`\R`), rendering it inoperative.
      Problem introduced by me in commit 4f4b79b8aa, 26 April 2022.  Restore
      logic to handle this table entry type.  Also throw new error
      diagnostic if the repeated glyph token appears with no argument.  Also
      improve code style by reusing variable with already-computed entry
      string length instead of calculating it again.
    
    Fixes <https://savannah.gnu.org/bugs/?65225>.  Thanks to the anonymous
    submitter for a reproducing case and a correct suggestion of the
    offending commit.
---
 ChangeLog                 | 17 +++++++++++++++++
 src/preproc/tbl/table.cpp | 10 ++++++++++
 2 files changed, 27 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index ca17662f5..b2fa75e5e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2024-01-29  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       [tbl]: Fix Savannah #65225.
+
+       * src/preproc/tbl/table.cpp (table::add_entry): Fix regression
+       in repeated glyph tbl(1) feature (`\R`), rendering it
+       inoperative.  Problem introduced by me in commit 4f4b79b8aa, 26
+       April 2022.  Restore logic to handle this table entry type.
+       Also throw new error diagnostic if the repeated glyph token
+       appears with no argument.  Also improve code style by reusing
+       variable with already-computed entry string length instead of
+       calculating it again.
+
+       Fixes <https://savannah.gnu.org/bugs/?65225>.  Thanks to the
+       anonymous submitter for a reproducing case and a correct
+       suggestion of the offending commit.
+
 2024-01-29  G. Branden Robinson <g.branden.robinson@gmail.com>
 
        [tbl]: Regression-test Savannah #65225.
diff --git a/src/preproc/tbl/table.cpp b/src/preproc/tbl/table.cpp
index c3e65d429..3459e9276 100644
--- a/src/preproc/tbl/table.cpp
+++ b/src/preproc/tbl/table.cpp
@@ -1581,6 +1581,16 @@ void table::add_entry(int r, int c, const string &str,
     else
       do_vspan(r, c);
   }
+  else if (strncmp(s, "\\R", 2) == 0) {
+    if (len < 3) {
+      error("'\\R' requires a glyph to repeat");
+      e = new empty_entry(this, f);
+    }
+    else {
+      char *glyph = str.substring(2, len - 2).extract();
+      e = new repeated_char_entry(this, f, glyph);
+    }
+  }
   else {
     int is_block = str.search('\n') >= 0;
     switch (f->type) {



reply via email to

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