=================================================================== RCS file: /cvs/mandoc/eqn_term.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -p -r1.15 -r1.16 --- mandoc/eqn_term.c 2017/08/23 20:29:42 1.15 +++ mandoc/eqn_term.c 2017/08/23 20:49:15 1.16 @@ -1,4 +1,4 @@ -/* $Id: eqn_term.c,v 1.15 2017/08/23 20:29:42 schwarze Exp $ */ +/* $Id: eqn_term.c,v 1.16 2017/08/23 20:49:15 schwarze Exp $ */ /* * Copyright (c) 2011 Kristaps Dzonsons * Copyright (c) 2014, 2015, 2017 Ingo Schwarze @@ -52,6 +52,7 @@ static void eqn_box(struct termp *p, const struct eqn_box *bp) { const struct eqn_box *child; + const char *cp; int delim; /* Delimiters around this box? */ @@ -94,8 +95,9 @@ eqn_box(struct termp *p, const struct eqn_box *bp) if (strchr("!\"'),.:;?]}", *bp->text) != NULL) p->flags |= TERMP_NOSPACE; term_word(p, bp->text); - if (*bp->text != '\0' && strchr("\"'([{", - bp->text[strlen(bp->text) - 1]) != NULL) + if ((cp = strchr(bp->text, '\0')) > bp->text && + ((cp[-1] == '-' && bp->prev == NULL) || + strchr("\"'([{", cp[-1]) != NULL)) p->flags |= TERMP_NOSPACE; }