From 266c94623f8d47d4db151c4f7b291320e7613f02 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Thu, 16 Dec 2010 17:14:48 +0000 Subject: Migrate `An' to use a pointer in its data, like everybody else. This is the first step to having a simpler ref-counted system for "data" associated with a node. --- mdoc.c | 3 +++ mdoc.h | 2 +- mdoc_term.c | 4 ++-- mdoc_validate.c | 11 +++++++---- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/mdoc.c b/mdoc.c index f14e91ec..a78bb5d0 100644 --- a/mdoc.c +++ b/mdoc.c @@ -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); diff --git a/mdoc.h b/mdoc.h index cb19182a..6c019073 100644 --- a/mdoc.h +++ b/mdoc.h @@ -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); -- cgit