=================================================================== RCS file: /cvs/mandoc/tbl_data.c,v retrieving revision 1.37 retrieving revision 1.40 diff -u -p -r1.37 -r1.40 --- mandoc/tbl_data.c 2015/01/30 02:09:04 1.37 +++ mandoc/tbl_data.c 2015/04/19 20:35:20 1.40 @@ -1,4 +1,4 @@ -/* $Id: tbl_data.c,v 1.37 2015/01/30 02:09:04 schwarze Exp $ */ +/* $Id: tbl_data.c,v 1.40 2015/04/19 20:35:20 schwarze Exp $ */ /* * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2011, 2015 Ingo Schwarze @@ -44,13 +44,9 @@ getdata(struct tbl_node *tbl, struct tbl_span *dp, struct tbl_cell *cp; int sv; - cp = dp->last == NULL ? dp->layout->first : dp->last->layout->next; + /* Advance to the next layout cell, skipping spanners. */ - /* - * Skip over spanners, since - * we want to match data with data layout cells in the header. - */ - + cp = dp->last == NULL ? dp->layout->first : dp->last->layout->next; while (cp != NULL && cp->pos == TBL_CELL_SPAN) cp = cp->next; @@ -136,7 +132,8 @@ tbl_cdata(struct tbl_node *tbl, int ln, const char *p, if (p[pos] == tbl->opts.tab) { tbl->part = TBL_PART_DATA; pos++; - getdata(tbl, tbl->last_span, ln, p, &pos); + while (p[pos] != '\0') + getdata(tbl, tbl->last_span, ln, p, &pos); return(1); } else if (p[pos] == '\0') { tbl->part = TBL_PART_DATA; @@ -172,13 +169,11 @@ newspan(struct tbl_node *tbl, int line, struct tbl_row dp->line = line; dp->opts = &tbl->opts; dp->layout = rp; - dp->head = tbl->first_head; dp->prev = tbl->last_span; if (dp->prev == NULL) { tbl->first_span = dp; tbl->current_span = NULL; - dp->flags |= TBL_SPAN_FIRST; } else dp->prev->next = dp; tbl->last_span = dp;