=================================================================== RCS file: /cvs/mandoc/roff.c,v retrieving revision 1.190 retrieving revision 1.191 diff -u -p -r1.190 -r1.191 --- mandoc/roff.c 2014/01/06 21:34:31 1.190 +++ mandoc/roff.c 2014/01/06 23:46:07 1.191 @@ -1,4 +1,4 @@ -/* $Id: roff.c,v 1.190 2014/01/06 21:34:31 schwarze Exp $ */ +/* $Id: roff.c,v 1.191 2014/01/06 23:46:07 schwarze Exp $ */ /* * Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons * Copyright (c) 2010-2014 Ingo Schwarze @@ -448,14 +448,9 @@ roff_free1(struct roff *r) void roff_reset(struct roff *r) { - int i; roff_free1(r); - r->control = 0; - - for (i = 0; i < PREDEFS_MAX; i++) - roff_setstr(r, predefs[i].name, predefs[i].str, 0); } @@ -472,7 +467,6 @@ struct roff * roff_alloc(enum mparset type, struct mparse *parse, int quick) { struct roff *r; - int i; r = mandoc_calloc(1, sizeof(struct roff)); r->parsetype = type; @@ -482,9 +476,6 @@ roff_alloc(enum mparset type, struct mparse *parse, in roffhash_init(); - for (i = 0; i < PREDEFS_MAX; i++) - roff_setstr(r, predefs[i].name, predefs[i].str, 0); - return(r); } @@ -1903,11 +1894,17 @@ static const char * roff_getstrn(const struct roff *r, const char *name, size_t len) { const struct roffkv *n; + int i; for (n = r->strtab; n; n = n->next) if (0 == strncmp(name, n->key.p, len) && '\0' == n->key.p[(int)len]) return(n->val.p); + + for (i = 0; i < PREDEFS_MAX; i++) + if (0 == strncmp(name, predefs[i].name, len) && + '\0' == predefs[i].name[(int)len]) + return(predefs[i].str); return(NULL); }