Properly checked in Ingo Schwarze' prologue/body-breaking patch, which I'd munged.
authorKristaps Dzonsons <kristaps@bsd.lv>
Thu, 8 Apr 2010 07:06:15 +0000 (07:06 +0000)
committerKristaps Dzonsons <kristaps@bsd.lv>
Thu, 8 Apr 2010 07:06:15 +0000 (07:06 +0000)
mdoc.c

diff --git a/mdoc.c b/mdoc.c
index e0d63fed8b2a0ffe421e9b3862ca0d29f826d182..fd6efb901c163fede1cb3ad0d22118ae29dd1451 100644 (file)
--- a/mdoc.c
+++ b/mdoc.c
@@ -1,4 +1,4 @@
-/*     $Id: mdoc.c,v 1.121 2010/04/06 11:33:00 kristaps Exp $ */
+/*     $Id: mdoc.c,v 1.122 2010/04/08 07:06:15 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -348,19 +348,20 @@ int
 mdoc_macro(struct mdoc *m, enum mdoct tok, 
                int ln, int pp, int *pos, char *buf)
 {
-
        assert(tok < MDOC_MAX);
-       /*
-        * If we're in the prologue, deny "body" macros.  Similarly, if
-        * we're in the body, deny prologue calls.
-        */
+
+       /* If we're in the body, deny prologue calls. */
+
        if (MDOC_PROLOGUE & mdoc_macros[tok].flags && 
-                       MDOC_PBODY & m->flags) {
+                       MDOC_PBODY & m->flags)
+               return(mdoc_perr(m, ln, pp, EPROLBODY));
+
+       /* If we're in the prologue, deny "body" macros.  */
+
+       if ( ! (MDOC_PROLOGUE & mdoc_macros[tok].flags) && 
+                       ! (MDOC_PBODY & m->flags)) {
                if ( ! mdoc_pwarn(m, ln, pp, EBODYPROL))
                        return(0);
-               /*
-                * FIXME: do this in mdoc_action.c.
-                */
                if (NULL == m->meta.title)
                        m->meta.title = mandoc_strdup("unknown");
                if (NULL == m->meta.vol)
@@ -371,9 +372,6 @@ mdoc_macro(struct mdoc *m, enum mdoct tok,
                        m->meta.date = time(NULL);
                m->flags |= MDOC_PBODY;
        }
-       if ( ! (MDOC_PROLOGUE & mdoc_macros[tok].flags) && 
-                       ! (MDOC_PBODY & m->flags))
-               return(mdoc_perr(m, ln, pp, EBODYPROL));
 
        return((*mdoc_macros[tok].fp)(m, tok, ln, pp, pos, buf));
 }