From 74ba6bc0c8674c837bcc6219e1d4c25c9700791c Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Thu, 10 Jun 2010 23:24:37 +0000 Subject: [PATCH] Fix a regression that crept in in man_term.c 1.73 and mdoc_term.c 1.144. 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 | 6 +++--- mdoc_term.c | 7 +++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/man_term.c b/man_term.c index bde3aa07..8c512702 100644 --- a/man_term.c +++ b/man_term.c @@ -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 * @@ -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; diff --git a/mdoc_term.c b/mdoc_term.c index 20ce1076..7b590ed7 100644 --- a/mdoc_term.c +++ b/mdoc_term.c @@ -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 * @@ -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); -- 2.47.1