=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/eqn.c,v retrieving revision 1.24 retrieving revision 1.25 diff -c -r1.24 -r1.25 *** src/usr.bin/mandoc/eqn.c 2016/01/08 00:50:20 1.24 --- src/usr.bin/mandoc/eqn.c 2017/03/11 15:42:03 1.25 *************** *** 1,4 **** ! /* $OpenBSD: eqn.c,v 1.24 2016/01/08 00:50:20 schwarze Exp $ */ /* * Copyright (c) 2011, 2014 Kristaps Dzonsons * Copyright (c) 2014, 2015 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: eqn.c,v 1.25 2017/03/11 15:42:03 schwarze Exp $ */ /* * Copyright (c) 2011, 2014 Kristaps Dzonsons * Copyright (c) 2014, 2015 Ingo Schwarze *************** *** 364,378 **** static const char * eqn_next(struct eqn_node *ep, char quote, size_t *sz, int repl) { char *start, *next; ! int q, diff, lim; size_t ssz, dummy; struct eqn_def *def; if (NULL == sz) sz = &dummy; ! lim = 0; ep->rew = ep->cur; again: /* Prevent self-definitions. */ --- 364,382 ---- static const char * eqn_next(struct eqn_node *ep, char quote, size_t *sz, int repl) { + static size_t last_len; + static int lim; + char *start, *next; ! int q, diff; size_t ssz, dummy; struct eqn_def *def; if (NULL == sz) sz = &dummy; ! if (ep->cur >= last_len) ! lim = 0; ep->rew = ep->cur; again: /* Prevent self-definitions. */ *************** *** 446,451 **** --- 450,456 ---- memmove(start + *sz + diff, start + *sz, (strlen(start) - *sz) + 1); memcpy(start, def->val, def->valsz); + last_len = start - ep->data + def->valsz; lim++; goto again; }