=================================================================== RCS file: /cvs/mandoc/mdoc.c,v retrieving revision 1.85 retrieving revision 1.87 diff -u -p -r1.85 -r1.87 --- mandoc/mdoc.c 2009/06/17 10:53:32 1.85 +++ mandoc/mdoc.c 2009/07/06 09:21:24 1.87 @@ -1,4 +1,4 @@ -/* $Id: mdoc.c,v 1.85 2009/06/17 10:53:32 kristaps Exp $ */ +/* $Id: mdoc.c,v 1.87 2009/07/06 09:21:24 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -264,8 +264,7 @@ mdoc_verr(struct mdoc *mdoc, int ln, int pos, int -mdoc_vwarn(struct mdoc *mdoc, int ln, int pos, - enum mdoc_warn type, const char *fmt, ...) +mdoc_vwarn(struct mdoc *mdoc, int ln, int pos, const char *fmt, ...) { char buf[256]; va_list ap; @@ -276,7 +275,7 @@ mdoc_vwarn(struct mdoc *mdoc, int ln, int pos, va_start(ap, fmt); (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap); va_end(ap); - return((*mdoc->cb.mdoc_warn)(mdoc->data, ln, pos, type, buf)); + return((*mdoc->cb.mdoc_warn)(mdoc->data, ln, pos, buf)); } @@ -299,8 +298,7 @@ mdoc_nerr(struct mdoc *mdoc, const struct mdoc_node *n int -mdoc_warn(struct mdoc *mdoc, enum mdoc_warn type, - const char *fmt, ...) +mdoc_warn(struct mdoc *mdoc, const char *fmt, ...) { char buf[256]; va_list ap; @@ -311,8 +309,8 @@ mdoc_warn(struct mdoc *mdoc, enum mdoc_warn type, va_start(ap, fmt); (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap); va_end(ap); - return((*mdoc->cb.mdoc_warn)(mdoc->data, mdoc->last->line, - mdoc->last->pos, type, buf)); + return((*mdoc->cb.mdoc_warn)(mdoc->data, mdoc->last->line, + mdoc->last->pos, buf)); } @@ -334,8 +332,7 @@ mdoc_err(struct mdoc *mdoc, const char *fmt, ...) int -mdoc_pwarn(struct mdoc *mdoc, int line, int pos, enum mdoc_warn type, - const char *fmt, ...) +mdoc_pwarn(struct mdoc *mdoc, int line, int pos, const char *fmt, ...) { char buf[256]; va_list ap; @@ -346,8 +343,7 @@ mdoc_pwarn(struct mdoc *mdoc, int line, int pos, enum va_start(ap, fmt); (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap); va_end(ap); - return((*mdoc->cb.mdoc_warn)(mdoc->data, - line, pos, type, buf)); + return((*mdoc->cb.mdoc_warn)(mdoc->data, line, pos, buf)); } int @@ -442,6 +438,8 @@ node_append(struct mdoc *mdoc, struct mdoc_node *p) /* NOTREACHED */ } + p->parent->nchild++; + if ( ! mdoc_valid_pre(mdoc, p)) return(0); if ( ! mdoc_action_pre(mdoc, p)) @@ -597,6 +595,8 @@ void mdoc_node_free(struct mdoc_node *p) { + if (p->parent) + p->parent->nchild--; if (p->string) free(p->string); if (p->args) @@ -614,6 +614,7 @@ mdoc_node_freelist(struct mdoc_node *p) if (p->next) mdoc_node_freelist(p->next); + assert(0 == p->nchild); mdoc_node_free(p); } @@ -647,8 +648,7 @@ macrowarn(struct mdoc *m, int ln, const char *buf) return(mdoc_perr(m, ln, 1, "unknown macro: %s%s", buf, strlen(buf) > 3 ? "..." : "")); - return(mdoc_pwarn(m, ln, 1, WARN_SYNTAX, - "unknown macro: %s%s", + return(mdoc_pwarn(m, ln, 1, "unknown macro: %s%s", buf, strlen(buf) > 3 ? "..." : "")); }