]> git.cameronkatri.com Git - mandoc.git/commitdiff
Fix a regression that crept in in man_term.c 1.73 and mdoc_term.c 1.144.
authorIngo Schwarze <schwarze@openbsd.org>
Thu, 10 Jun 2010 23:24:37 +0000 (23:24 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Thu, 10 Jun 2010 23:24:37 +0000 (23:24 +0000)
When the title line uses special characters, mandoc will segfault.
Thus, first set up the character tables, then print the header,
as we always did.

Found in OpenBSD /usr/src/usr.sbin/bind/bin/check/named-checkconf.8.

While here, set p->tabwidth in terminal_man() for symmetry
with terminal_mdoc(), as suggested by millert@ (and already
committed to OpenBSD earlier).   Since 5 is the default, this
is not strictly required, but it is certainly clearer and more
robust.

"looks fine" kristaps@

man_term.c
mdoc_term.c

index bde3aa0768123fc1725b5d59c6dc145438c13ac3..8c51270290acf9bbb9e50d3cfa196e0a239528ff 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_term.c,v 1.74 2010/06/09 08:07:13 kristaps Exp $ */
+/*     $Id: man_term.c,v 1.75 2010/06/10 23:24:37 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -158,8 +158,7 @@ terminal_man(void *arg, const struct man *man)
 
        p->overstep = 0;
        p->maxrmargin = p->defrmargin;
-
-       term_begin(p, print_man_head, print_man_foot, man_meta(man));
+       p->tabwidth = 5;
 
        if (NULL == p->symtab)
                switch (p->enc) {
@@ -174,6 +173,7 @@ terminal_man(void *arg, const struct man *man)
        n = man_node(man);
        m = man_meta(man);
 
+       term_begin(p, print_man_head, print_man_foot, m);
        p->flags |= TERMP_NOSPACE;
 
        mt.fl = 0;
index 20ce1076ab1fab841d80f7a55a285633b689a650..7b590ed78313d7b96f3a4609001e7579fd79c1ac 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_term.c,v 1.145 2010/06/09 08:07:13 kristaps Exp $ */
+/*     $Id: mdoc_term.c,v 1.146 2010/06/10 23:24:37 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -276,9 +276,6 @@ terminal_mdoc(void *arg, const struct mdoc *mdoc)
        p->maxrmargin = p->defrmargin;
        p->tabwidth = 5;
 
-       term_begin(p, print_mdoc_head, 
-                       print_mdoc_foot, mdoc_meta(mdoc));
-
        if (NULL == p->symtab)
                switch (p->enc) {
                case (TERMENC_ASCII):
@@ -292,6 +289,8 @@ terminal_mdoc(void *arg, const struct mdoc *mdoc)
        n = mdoc_node(mdoc);
        m = mdoc_meta(mdoc);
 
+       term_begin(p, print_mdoc_head, print_mdoc_foot, m);
+
        if (n->child)
                print_mdoc_nodelist(p, NULL, m, n->child);