From 81d05af23d7b7c63bde7a7c646dc791463d93873 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Wed, 29 Nov 2017 20:05:33 +0000 Subject: Recognize .Bl -column at parse time, and not only at validation time, even if other arguments precede -column. This is required because the .It parser needs to know whether or not we are a -column list. Fixes tree corruption leading to an assertion failure. Bug reported by bentley@. --- mdoc_state.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/mdoc_state.c b/mdoc_state.c index ecf06201..d5428e2f 100644 --- a/mdoc_state.c +++ b/mdoc_state.c @@ -208,19 +208,24 @@ state_bd(STATE_ARGS) static void state_bl(STATE_ARGS) { + struct mdoc_arg *args; + size_t i; if (n->type != ROFFT_HEAD || n->parent->args == NULL) return; - switch(n->parent->args->argv[0].arg) { - case MDOC_Diag: - n->norm->Bl.type = LIST_diag; - break; - case MDOC_Column: - n->norm->Bl.type = LIST_column; - break; - default: - break; + args = n->parent->args; + for (i = 0; i < args->argc; i++) { + switch(args->argv[i].arg) { + case MDOC_Diag: + n->norm->Bl.type = LIST_diag; + return; + case MDOC_Column: + n->norm->Bl.type = LIST_column; + return; + default: + break; + } } } -- cgit