diff options
-rw-r--r-- | mdoc.c | 3 | ||||
-rw-r--r-- | mdoc.h | 2 | ||||
-rw-r--r-- | mdoc_term.c | 4 | ||||
-rw-r--r-- | mdoc_validate.c | 11 |
4 files changed, 13 insertions, 7 deletions
@@ -526,6 +526,9 @@ mdoc_node_free(struct mdoc_node *p) if (MDOC_Bf == p->tok && MDOC_HEAD == p->type) if (p->data.Bf) free(p->data.Bf); + if (MDOC_An == p->tok) + if (p->data.An) + free(p->data.An); if (p->string) free(p->string); @@ -359,7 +359,7 @@ struct mdoc_an { * provided, etc. */ union mdoc_data { - struct mdoc_an An; + struct mdoc_an *An; struct mdoc_bd *Bd; struct mdoc_bf *Bf; struct mdoc_bl *Bl; diff --git a/mdoc_term.c b/mdoc_term.c index 820db16e..9ee6b3bb 100644 --- a/mdoc_term.c +++ b/mdoc_term.c @@ -1116,10 +1116,10 @@ termp_an_post(DECL_ARGS) return; } - if (AUTH_split == n->data.An.auth) { + if (AUTH_split == n->data.An->auth) { p->flags &= ~TERMP_NOSPLIT; p->flags |= TERMP_SPLIT; - } else if (AUTH_nosplit == n->data.An.auth) { + } else if (AUTH_nosplit == n->data.An->auth) { p->flags &= ~TERMP_SPLIT; p->flags |= TERMP_NOSPLIT; } diff --git a/mdoc_validate.c b/mdoc_validate.c index 40d66564..1093ece3 100644 --- a/mdoc_validate.c +++ b/mdoc_validate.c @@ -904,6 +904,9 @@ pre_an(PRE_ARGS) { int i; + assert(NULL == n->data.An); + n->data.An = mandoc_calloc(1, sizeof(struct mdoc_an)); + if (NULL == n->args) return(1); @@ -912,9 +915,9 @@ pre_an(PRE_ARGS) n->args->argv[i].pos, MANDOCERR_IGNARGV); if (MDOC_Split == n->args->argv[0].arg) - n->data.An.auth = AUTH_split; + n->data.An->auth = AUTH_split; else if (MDOC_Nosplit == n->args->argv[0].arg) - n->data.An.auth = AUTH_nosplit; + n->data.An->auth = AUTH_nosplit; else abort(); @@ -1247,14 +1250,14 @@ post_an(POST_ARGS) struct mdoc_node *np; np = mdoc->last; - if (AUTH__NONE != np->data.An.auth && np->child) + if (AUTH__NONE != np->data.An->auth && np->child) return(eerr_eq0(mdoc)); /* * FIXME: make this ewarn and make sure that the front-ends * don't print the arguments. */ - if (AUTH__NONE != np->data.An.auth || np->child) + if (AUTH__NONE != np->data.An->auth || np->child) return(1); mdoc_nmsg(mdoc, np, MANDOCERR_NOARGS); |