]> git.cameronkatri.com Git - mandoc.git/blobdiff - roff.c
Align to the new, sane behaviour of the groff_mdoc(7) .Dd macro:
[mandoc.git] / roff.c
diff --git a/roff.c b/roff.c
index ca53b5f9bc9b5aa2aceff4c96495193f53c738c4..427f62b52e9923a2b8c0869c7c7fb6f1ade07aa7 100644 (file)
--- a/roff.c
+++ b/roff.c
@@ -1,4 +1,4 @@
-/*     $Id: roff.c,v 1.367 2019/11/09 14:39:49 schwarze Exp $ */
+/*     $Id: roff.c,v 1.368 2019/12/26 19:51:51 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2015, 2017-2019 Ingo Schwarze <schwarze@openbsd.org>
@@ -2294,12 +2294,24 @@ roff_cond_sub(ROFF_ARGS)
                }
        }
 
+       t = roff_parse(r, buf->buf, &pos, ln, ppos);
+
+       /* For now, let high level macros abort .ce mode. */
+
+       if (roffce_node != NULL &&
+           (t == TOKEN_NONE || t == ROFF_Dd || t == ROFF_EQ ||
+             t == ROFF_TH || t == ROFF_TS)) {
+               r->man->last = roffce_node;
+               r->man->next = ROFF_NEXT_SIBLING;
+               roffce_lines = 0;
+               roffce_node = NULL;
+       }
+
        /*
         * Fully handle known macros when they are structurally
         * required or when the conditional evaluated to true.
         */
 
-       t = roff_parse(r, buf->buf, &pos, ln, ppos);
        if (t == ROFF_break) {
                if (irc & ROFF_LOOPMASK)
                        irc = ROFF_IGN | ROFF_LOOPEXIT;