Hi Anthony,
Anthony J. Bentley wrote on Wed, Nov 22, 2017 at 02:49:09AM -0700:
> .Dd
> .Bl -offset indent -column local
> .It x
> .El
>
> (gdb) run tmp.d8X8GXiA24
> Starting program: /usr/bin/mandoc tmp.d8X8GXiA24
> assertion "nit->head->child == NULL" failed:
> file "mdoc_validate.c", line 1503, function "post_it"
Oops, i broke that quite some time ago when moving the validation
phase after the parsing phase. Fixed by the commit below.
Thanks for reporting!
Ingo
Log Message:
-----------
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@.
Modified Files:
--------------
mandoc:
mdoc_state.c
Revision Data
-------------
Index: mdoc_state.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/mdoc_state.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -Lmdoc_state.c -Lmdoc_state.c -u -p -r1.8 -r1.9
--- mdoc_state.c
+++ 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;
+ }
}
}
--
To unsubscribe send an email to tech+unsubscribe@mandoc.bsd.lv