aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mdoc_state.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-11-29 20:05:33 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-11-29 20:05:33 +0000
commitecdc87e5559dd9b1c92b6a74a531408b6b6d6c32 (patch)
treef4ea94c11c085f7f36860c83cf938bbe4e5ec5d3 /mdoc_state.c
parentf3f0161d5d0a0053fa4efd98d8fbb08242d7778b (diff)
downloadmandoc-ecdc87e5559dd9b1c92b6a74a531408b6b6d6c32.tar.gz
mandoc-ecdc87e5559dd9b1c92b6a74a531408b6b6d6c32.tar.zst
mandoc-ecdc87e5559dd9b1c92b6a74a531408b6b6d6c32.zip
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@.
Diffstat (limited to 'mdoc_state.c')
-rw-r--r--mdoc_state.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/mdoc_state.c b/mdoc_state.c
index d9cad18b..2d8563f5 100644
--- a/mdoc_state.c
+++ b/mdoc_state.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_state.c,v 1.8 2017/05/05 15:17:32 schwarze Exp $ */
+/* $Id: mdoc_state.c,v 1.9 2017/11/29 20:05:33 schwarze Exp $ */
/*
* Copyright (c) 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
*
@@ -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;
+ }
}
}