=================================================================== RCS file: /cvs/mandoc/tbl_term.c,v retrieving revision 1.69 retrieving revision 1.71 diff -u -p -r1.69 -r1.71 --- mandoc/tbl_term.c 2019/03/16 21:35:48 1.69 +++ mandoc/tbl_term.c 2019/06/11 16:04:36 1.71 @@ -1,4 +1,4 @@ -/* $Id: tbl_term.c,v 1.69 2019/03/16 21:35:48 schwarze Exp $ */ +/* $Id: tbl_term.c,v 1.71 2019/06/11 16:04:36 schwarze Exp $ */ /* * Copyright (c) 2009, 2011 Kristaps Dzonsons * Copyright (c) 2011-2019 Ingo Schwarze @@ -622,14 +622,19 @@ tbl_hrule(struct termp *tp, const struct tbl_span *spp (spp == NULL || cpn == NULL || cpn->pos != TBL_CELL_DOWN ? BRIGHT * hw : 0), 1); + col = tp->tbl.cols; for (;;) { - col = tp->tbl.cols + cp->col; + if (cp == NULL) + col++; + else + col = tp->tbl.cols + cp->col; /* Print the horizontal line inside this column. */ lw = cpp == NULL || cpn == NULL || (cpn->pos != TBL_CELL_DOWN && - (dpn == NULL || strcmp(dpn->string, "\\^") != 0)) + (dpn == NULL || dpn->string == NULL || + strcmp(dpn->string, "\\^") != 0)) ? hw : 0; tbl_direct_border(tp, BHORIZ * lw, col->width + col->spacing / 2); @@ -648,7 +653,8 @@ tbl_hrule(struct termp *tp, const struct tbl_span *spp uw = 1; } cpp = cpp->next; - } + } else if (spp != NULL && opts & TBL_OPT_ALLBOX) + uw = 1; if (cp != NULL) cp = cp->next; if (cpn != NULL) { @@ -660,8 +666,9 @@ tbl_hrule(struct termp *tp, const struct tbl_span *spp cpn = cpn->next; while (dpn != NULL && dpn->layout != cpn) dpn = dpn->next; - } - if (cpp == NULL && cp == NULL && cpn == NULL) + } else if (spn != NULL && opts & TBL_OPT_ALLBOX) + dw = 1; + if (col + 1 == tp->tbl.cols + sp->opts->cols) break; /* Vertical lines do not cross spanned cells. */ @@ -675,7 +682,8 @@ tbl_hrule(struct termp *tp, const struct tbl_span *spp rw = cpp == NULL || cpn == NULL || (cpn->pos != TBL_CELL_DOWN && - (dpn == NULL || strcmp(dpn->string, "\\^") != 0)) + (dpn == NULL || dpn->string == NULL || + strcmp(dpn->string, "\\^") != 0)) ? hw : 0; /* The line crossing at the end of this column. */