+ /* Trailing whitespace? */
+
+ if ('\0' == buf[i] && ' ' == buf[i - 1])
+ if ( ! man_pwarn(m, ln, i - 1, WTSPACE))
+ goto err;
+
+ /*
+ * Remove prior ELINE macro, as it's being clobbering by a new
+ * macro. Note that NSCOPED macros do not close out ELINE
+ * macros---they don't print text---so we let those slip by.
+ */
+
+ if ( ! (MAN_NSCOPED & man_macros[tok].flags) &&
+ m->flags & MAN_ELINE) {
+ assert(MAN_TEXT != m->last->type);
+
+ /*
+ * This occurs in the following construction:
+ * .B
+ * .br
+ * .B
+ * .br
+ * I hate man macros.
+ * Flat-out disallow this madness.
+ */
+ if (MAN_NSCOPED & man_macros[m->last->tok].flags)
+ return(man_perr(m, ln, ppos, WLNSCOPE));
+
+ n = m->last;
+
+ assert(n);
+ assert(NULL == n->child);
+ assert(0 == n->nchild);
+
+ if ( ! man_nwarn(m, n, WLNSCOPE))
+ return(0);
+
+ man_node_delete(m, n);
+ m->flags &= ~MAN_ELINE;
+ }
+