summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-01-01 16:10:40 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-01-01 16:10:40 +0000
commitd84dbf74b948c2ca03a405c62aaddd91c404e66e (patch)
treecf61eba08e8d1e40418b9a0e2391cd6c0fad6d12
parent11a4a49536978db711f68cc010fec41f76c2f970 (diff)
downloadmandoc-d84dbf74b948c2ca03a405c62aaddd91c404e66e.tar.gz
Raise an error if a table is closed without data.
-rw-r--r--libroff.h2
-rw-r--r--roff.c2
-rw-r--r--tbl.c8
3 files changed, 9 insertions, 3 deletions
diff --git a/libroff.h b/libroff.h
index 4c9617a9..a140d2a5 100644
--- a/libroff.h
+++ b/libroff.h
@@ -54,7 +54,7 @@ struct tbl {
(*(tblp)->msg)((type), (tblp)->data, (line), (col), NULL)
struct tbl *tbl_alloc(int, int, void *, mandocmsg);
-void tbl_restart(struct tbl *);
+void tbl_restart(int, int, struct tbl *);
void tbl_free(struct tbl *);
void tbl_reset(struct tbl *);
enum rofferr tbl_read(struct tbl *, int, const char *, int);
diff --git a/roff.c b/roff.c
index 56202846..b0a373cd 100644
--- a/roff.c
+++ b/roff.c
@@ -1138,7 +1138,7 @@ roff_T_(ROFF_ARGS)
if (NULL == r->tbl)
(*r->msg)(MANDOCERR_NOSCOPE, r->data, ln, ppos, NULL);
else
- tbl_restart(r->tbl);
+ tbl_restart(ppos, ln, r->tbl);
return(ROFF_IGN);
}
diff --git a/tbl.c b/tbl.c
index 7f37405c..f2e54b91 100644
--- a/tbl.c
+++ b/tbl.c
@@ -116,10 +116,15 @@ tbl_free(struct tbl *p)
}
void
-tbl_restart(struct tbl *tbl)
+tbl_restart(int line, int pos, struct tbl *tbl)
{
tbl->part = TBL_PART_LAYOUT;
+ tbl->line = line;
+ tbl->pos = pos;
+
+ if (NULL == tbl->first_span || NULL == tbl->first_span->first)
+ TBL_MSG(tbl, MANDOCERR_TBLNODATA, tbl->line, tbl->pos);
}
const struct tbl_span *
@@ -137,3 +142,4 @@ tbl_end(struct tbl *tbl)
if (NULL == tbl->first_span || NULL == tbl->first_span->first)
TBL_MSG(tbl, MANDOCERR_TBLNODATA, tbl->line, tbl->pos);
}
+