diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2019-02-09 16:00:39 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2019-02-09 16:00:39 +0000 |
commit | 1d3de6feb750b548931f933310c957774b12c099 (patch) | |
tree | 05e1e10cceba0c9a68dbec9618619fae771b83dc /tbl_data.c | |
parent | 0af2fc4df6c35ca0d4248e28b0c563513ca4d5e4 (diff) | |
download | mandoc-1d3de6feb750b548931f933310c957774b12c099.tar.gz |
ignore empty request lines in the table data reader;
fixing a minibug reported by bentley@
Diffstat (limited to 'tbl_data.c')
-rw-r--r-- | tbl_data.c | 31 |
1 files changed, 22 insertions, 9 deletions
@@ -1,7 +1,7 @@ /* $Id$ */ /* * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> - * Copyright (c) 2011, 2015, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2011,2015,2017,2018,2019 Ingo Schwarze <schwarze@openbsd.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -248,14 +248,27 @@ tbl_data(struct tbl_node *tbl, int ln, const char *p, int pos) assert(rp != NULL); - if ( ! strcmp(p, "_")) { - sp = newspan(tbl, ln, rp); - sp->pos = TBL_SPAN_HORIZ; - return; - } else if ( ! strcmp(p, "=")) { - sp = newspan(tbl, ln, rp); - sp->pos = TBL_SPAN_DHORIZ; - return; + if (p[1] == '\0') { + switch (p[0]) { + case '.': + /* + * Empty request lines must be handled here + * and cannot be discarded in roff_parseln() + * because in the layout section, they + * are significant and end the layout. + */ + return; + case '_': + sp = newspan(tbl, ln, rp); + sp->pos = TBL_SPAN_HORIZ; + return; + case '=': + sp = newspan(tbl, ln, rp); + sp->pos = TBL_SPAN_DHORIZ; + return; + default: + break; + } } /* |