]> git.cameronkatri.com Git - mandoc.git/commitdiff
Fix premature return from sub-conditional roff statements. This fix
authorKristaps Dzonsons <kristaps@bsd.lv>
Sat, 4 Sep 2010 18:31:44 +0000 (18:31 +0000)
committerKristaps Dzonsons <kristaps@bsd.lv>
Sat, 4 Sep 2010 18:31:44 +0000 (18:31 +0000)
fully accomodates for the pod2man standard preamble!

roff.c

diff --git a/roff.c b/roff.c
index ece3dfd2d2a45d5c579440dbab8f289e535b55cf..07e765036deb827a6a2ad5a9e8d688dfe833cfbc 100644 (file)
--- 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 <kristaps@bsd.lv>
  * Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -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