From 1bb02c5f3f0a6d9a75dfb2e644608cf5f870931d Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Sat, 4 Sep 2010 18:31:44 +0000 Subject: Fix premature return from sub-conditional roff statements. This fix fully accomodates for the pod2man standard preamble! --- roff.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/roff.c b/roff.c index ece3dfd2..07e76503 100644 --- a/roff.c +++ b/roff.c @@ -1,4 +1,4 @@ -/* $Id: roff.c,v 1.100 2010/08/29 11:29:51 kristaps Exp $ */ +/* $Id: roff.c,v 1.101 2010/09/04 18:31:44 kristaps Exp $ */ /* * Copyright (c) 2010 Kristaps Dzonsons * Copyright (c) 2010 Ingo Schwarze @@ -248,6 +248,7 @@ roffnode_pop(struct roff *r) if (r->rstackpos > -1) r->rstackpos--; + ROFF_DEBUG("roff: popping scope\n"); r->last = r->last->parent; if (p->end) free(p->end); @@ -426,8 +427,8 @@ roff_parseln(struct roff *r, int ln, char **bufp, if (r->last) { t = r->last->tok; assert(roffs[t].sub); - ROFF_DEBUG("roff: intercept scoped context: %s\n", - roffs[t].name); + ROFF_DEBUG("roff: intercept scoped context: %s, [%s]\n", + roffs[t].name, &(*bufp)[pos]); return((*roffs[t].sub) (r, t, bufp, szp, ln, pos, pos, offs)); @@ -761,9 +762,6 @@ roff_cond_sub(ROFF_ARGS) l = r->last; roffnode_cleanscope(r); - if (l != r->last) - return(ROFFRULE_DENY == rr ? ROFF_IGN : ROFF_CONT); - if (ROFF_MAX == (t = roff_parse(*bufp, &pos))) { if ('\\' == (*bufp)[pos] && '}' == (*bufp)[pos + 1]) return(roff_ccond -- cgit v1.2.3