=================================================================== RCS file: /cvs/mandoc/mdoc.c,v retrieving revision 1.112 retrieving revision 1.113 diff -u -p -r1.112 -r1.113 --- mandoc/mdoc.c 2009/10/27 08:26:12 1.112 +++ mandoc/mdoc.c 2009/10/30 05:58:38 1.113 @@ -1,4 +1,4 @@ -/* $Id: mdoc.c,v 1.112 2009/10/27 08:26:12 kristaps Exp $ */ +/* $Id: mdoc.c,v 1.113 2009/10/30 05:58:38 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -24,12 +24,12 @@ #include #include "libmdoc.h" +#include "libmandoc.h" const char *const __mdoc_merrnames[MERRMAX] = { "trailing whitespace", /* ETAILWS */ "unexpected quoted parameter", /* EQUOTPARM */ "unterminated quoted parameter", /* EQUOTTERM */ - "system: malloc error", /* EMALLOC */ "argument parameter suggested", /* EARGVAL */ "macro disallowed in prologue", /* EBODYPROL */ "macro disallowed in body", /* EPROLBODY */ @@ -137,7 +137,7 @@ const char * const *mdoc_macronames = __mdoc_macroname const char * const *mdoc_argnames = __mdoc_argnames; static void mdoc_free1(struct mdoc *); -static int mdoc_alloc1(struct mdoc *); +static void mdoc_alloc1(struct mdoc *); static struct mdoc_node *node_alloc(struct mdoc *, int, int, int, enum mdoc_type); static int node_append(struct mdoc *, @@ -194,21 +194,17 @@ mdoc_free1(struct mdoc *mdoc) /* * Allocate all volatile resources (parse tree, meta-data, fields). */ -static int +static void mdoc_alloc1(struct mdoc *mdoc) { memset(&mdoc->meta, 0, sizeof(struct mdoc_meta)); mdoc->flags = 0; mdoc->lastnamed = mdoc->lastsec = SEC_NONE; - mdoc->last = calloc(1, sizeof(struct mdoc_node)); - if (NULL == mdoc->last) - return(0); - + mdoc->last = mandoc_calloc(1, sizeof(struct mdoc_node)); mdoc->first = mdoc->last; mdoc->last->type = MDOC_ROOT; mdoc->next = MDOC_NEXT_CHILD; - return(1); } @@ -218,12 +214,12 @@ mdoc_alloc1(struct mdoc *mdoc) * and the parser is ready for re-invocation on a new tree; however, * cross-parse non-volatile data is kept intact. */ -int +void mdoc_reset(struct mdoc *mdoc) { mdoc_free1(mdoc); - return(mdoc_alloc1(mdoc)); + mdoc_alloc1(mdoc); } @@ -248,21 +244,17 @@ mdoc_alloc(void *data, int pflags, const struct mdoc_c { struct mdoc *p; - if (NULL == (p = calloc(1, sizeof(struct mdoc)))) - return(NULL); + p = mandoc_calloc(1, sizeof(struct mdoc)); + if (cb) - (void)memcpy(&p->cb, cb, sizeof(struct mdoc_cb)); + memcpy(&p->cb, cb, sizeof(struct mdoc_cb)); - mdoc_hash_init(); - p->data = data; p->pflags = pflags; - if (mdoc_alloc1(p)) - return(p); - - free(p); - return(NULL); + mdoc_hash_init(); + mdoc_alloc1(p); + return(p); } @@ -438,11 +430,7 @@ node_alloc(struct mdoc *m, int line, { struct mdoc_node *p; - if (NULL == (p = calloc(1, sizeof(struct mdoc_node)))) { - (void)mdoc_nerr(m, m->last, EMALLOC); - return(NULL); - } - + p = mandoc_calloc(1, sizeof(struct mdoc_node)); p->sec = m->lastsec; p->line = line; p->pos = pos; @@ -460,8 +448,6 @@ mdoc_tail_alloc(struct mdoc *m, int line, int pos, int struct mdoc_node *p; p = node_alloc(m, line, pos, tok, MDOC_TAIL); - if (NULL == p) - return(0); if ( ! node_append(m, p)) return(0); m->next = MDOC_NEXT_CHILD; @@ -478,8 +464,6 @@ mdoc_head_alloc(struct mdoc *m, int line, int pos, int assert(m->last); p = node_alloc(m, line, pos, tok, MDOC_HEAD); - if (NULL == p) - return(0); if ( ! node_append(m, p)) return(0); m->next = MDOC_NEXT_CHILD; @@ -493,8 +477,6 @@ mdoc_body_alloc(struct mdoc *m, int line, int pos, int struct mdoc_node *p; p = node_alloc(m, line, pos, tok, MDOC_BODY); - if (NULL == p) - return(0); if ( ! node_append(m, p)) return(0); m->next = MDOC_NEXT_CHILD; @@ -509,8 +491,6 @@ mdoc_block_alloc(struct mdoc *m, int line, int pos, struct mdoc_node *p; p = node_alloc(m, line, pos, tok, MDOC_BLOCK); - if (NULL == p) - return(0); p->args = args; if (p->args) (args->refcnt)++; @@ -528,8 +508,6 @@ mdoc_elem_alloc(struct mdoc *m, int line, int pos, struct mdoc_node *p; p = node_alloc(m, line, pos, tok, MDOC_ELEM); - if (NULL == p) - return(0); p->args = args; if (p->args) (args->refcnt)++; @@ -547,15 +525,7 @@ pstring(struct mdoc *m, int line, int pos, const char size_t sv; n = node_alloc(m, line, pos, -1, MDOC_TEXT); - if (NULL == n) - return(mdoc_nerr(m, m->last, EMALLOC)); - - n->string = malloc(len + 1); - if (NULL == n->string) { - free(n); - return(mdoc_nerr(m, m->last, EMALLOC)); - } - + n->string = mandoc_malloc(len + 1); sv = strlcpy(n->string, p, len + 1); /* Prohibit truncation. */