- if ((*bufp)[i])
- if ( ! (*r->msg)(MANDOCERR_ARGSLOST, r->data, ln, i, NULL))
- return(ROFF_ERR);
-
- /*
- * If the macro has arguments, the first argument (up to the
- * next whitespace) is interpreted as an argument marking the
- * macro close. Thus, `.ig foo' will close at `.foo'.
- *
- * NOTE: the closing macro `.foo' in the above case is not
- * allowed to have leading spaces with old groff! Thus `.foo'
- * != `. foo'. Oh yeah, everything after the `.foo' is lost.
- * Merry fucking Christmas.
- */
-
- r->last->end = malloc((size_t)(i - ppos) + 1);
- if (NULL == r->last->end) {
- (*r->msg)(MANDOCERR_MEM, r->data, ln, ppos, NULL);
- return(ROFF_ERR);
- }
-
- memcpy(r->last->end, &(*bufp)[ppos], (size_t)(i - ppos));
- r->last->end[i - ppos] = '\0';