]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc_macro.c
The function rew_sub() tries to rewind any all all kinds of blocks
[mandoc.git] / mdoc_macro.c
index 92de591291ca76aece97b29a7064544ba873d950..6034055b95e6e60ec7a43aa5eb166d50c4e6c79f 100644 (file)
@@ -1,7 +1,7 @@
-/*     $Id: mdoc_macro.c,v 1.160 2014/12/20 02:26:57 schwarze Exp $ */
+/*     $Id: mdoc_macro.c,v 1.162 2015/02/01 16:47:39 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
 /*
  * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2010, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2010, 2012-2015 Ingo Schwarze <schwarze@openbsd.org>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -363,7 +363,7 @@ rew_dohalt(enum mdoct tok, enum mdoc_type type,
         * When starting to rewind, skip plain text
         * and nodes that have already been rewound.
         */
         * When starting to rewind, skip plain text
         * and nodes that have already been rewound.
         */
-       if (MDOC_TEXT == p->type || MDOC_VALID & p->flags)
+       if (p->type == MDOC_TEXT || p->flags & (MDOC_VALID | MDOC_BREAK))
                return(REWIND_MORE);
 
        /*
                return(REWIND_MORE);
 
        /*
@@ -746,7 +746,7 @@ blk_exp_close(MACRO_PROT_ARGS)
        atok = rew_alt(tok);
        body = endbody = later = NULL;
        for (n = mdoc->last; n; n = n->parent) {
        atok = rew_alt(tok);
        body = endbody = later = NULL;
        for (n = mdoc->last; n; n = n->parent) {
-               if (n->flags & MDOC_VALID)
+               if (n->flags & (MDOC_VALID | MDOC_BREAK))
                        continue;
 
                /* Remember the start of our own body. */
                        continue;
 
                /* Remember the start of our own body. */
@@ -1137,7 +1137,7 @@ blk_full(MACRO_PROT_ARGS)
 
        if (tok == MDOC_Nd) {
                head = mdoc_head_alloc(mdoc, line, ppos, tok);
 
        if (tok == MDOC_Nd) {
                head = mdoc_head_alloc(mdoc, line, ppos, tok);
-               rew_sub(MDOC_HEAD, mdoc, tok, line, ppos);
+               rew_last(mdoc, head);
                body = mdoc_body_alloc(mdoc, line, ppos, tok);
        }
 
                body = mdoc_body_alloc(mdoc, line, ppos, tok);
        }
 
@@ -1274,8 +1274,7 @@ blk_part_imp(MACRO_PROT_ARGS)
         */
 
        blk = mdoc_block_alloc(mdoc, line, ppos, tok, NULL);
         */
 
        blk = mdoc_block_alloc(mdoc, line, ppos, tok, NULL);
-       mdoc_head_alloc(mdoc, line, ppos, tok);
-       rew_sub(MDOC_HEAD, mdoc, tok, line, ppos);
+       rew_last(mdoc, mdoc_head_alloc(mdoc, line, ppos, tok));
 
        /*
         * Open the body scope "on-demand", that is, after we've
 
        /*
         * Open the body scope "on-demand", that is, after we've