=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/roff.c,v retrieving revision 1.112 retrieving revision 1.113 diff -c -r1.112 -r1.113 *** src/usr.bin/mandoc/roff.c 2014/12/15 23:42:31 1.112 --- src/usr.bin/mandoc/roff.c 2014/12/16 01:21:37 1.113 *************** *** 1,4 **** ! /* $OpenBSD: roff.c,v 1.112 2014/12/15 23:42:31 schwarze Exp $ */ /* * Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons * Copyright (c) 2010-2014 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: roff.c,v 1.113 2014/12/16 01:21:37 schwarze Exp $ */ /* * Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons * Copyright (c) 2010-2014 Ingo Schwarze *************** *** 1247,1253 **** static int roff_evalcond(struct roff *r, int ln, const char *v, int *pos) { ! int wanttrue, number; if ('!' == v[*pos]) { wanttrue = 0; --- 1247,1253 ---- static int roff_evalcond(struct roff *r, int ln, const char *v, int *pos) { ! int number, savepos, wanttrue; if ('!' == v[*pos]) { wanttrue = 0; *************** *** 1280,1289 **** break; } if (roff_evalnum(r, ln, v, pos, &number, 0)) return((number > 0) == wanttrue); ! else return(roff_evalstrcond(v, pos) == wanttrue); } static enum rofferr --- 1280,1292 ---- break; } + savepos = *pos; if (roff_evalnum(r, ln, v, pos, &number, 0)) return((number > 0) == wanttrue); ! else if (*pos == savepos) return(roff_evalstrcond(v, pos) == wanttrue); + else + return (0); } static enum rofferr