=================================================================== RCS file: /cvs/mandoc/term.c,v retrieving revision 1.223 retrieving revision 1.226 diff -u -p -r1.223 -r1.226 --- mandoc/term.c 2014/04/23 21:06:41 1.223 +++ mandoc/term.c 2014/08/01 19:38:29 1.226 @@ -1,4 +1,4 @@ -/* $Id: term.c,v 1.223 2014/04/23 21:06:41 schwarze Exp $ */ +/* $Id: term.c,v 1.226 2014/08/01 19:38:29 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010-2014 Ingo Schwarze @@ -444,7 +444,7 @@ term_word(struct termp *p, const char *word) word++; esc = mandoc_escape(&word, &seq, &sz); if (ESCAPE_ERROR == esc) - break; + continue; if (TERMENC_ASCII != p->enc) switch (esc) { @@ -683,7 +683,7 @@ term_strlen(const struct termp *p, const char *cp) cp++; esc = mandoc_escape(&cp, &seq, &ssz); if (ESCAPE_ERROR == esc) - return(sz); + continue; if (TERMENC_ASCII != p->enc) switch (esc) { @@ -769,31 +769,31 @@ term_vspan(const struct termp *p, const struct roffsu switch (su->unit) { case SCALE_CM: - r = su->scale * 2; + r = su->scale * 2.0; break; case SCALE_IN: - r = su->scale * 6; + r = su->scale * 6.0; break; case SCALE_PC: r = su->scale; break; case SCALE_PT: - r = su->scale / 8; + r = su->scale / 8.0; break; case SCALE_MM: - r = su->scale / 1000; + r = su->scale / 1000.0; break; case SCALE_VS: r = su->scale; break; default: - r = su->scale - 1; + r = su->scale - 1.0; break; } if (r < 0.0) r = 0.0; - return((size_t)r); + return((size_t)(r + 0.0005)); } size_t @@ -801,8 +801,8 @@ term_hspan(const struct termp *p, const struct roffsu { double v; - v = ((*p->hspan)(p, su)); + v = (*p->hspan)(p, su); if (v < 0.0) v = 0.0; - return((size_t)v); + return((size_t)(v + 0.0005)); }