diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2018-08-17 20:33:37 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2018-08-17 20:33:37 +0000 |
commit | de2a1122a661dd4bd4004854891d44e87d63c6c2 (patch) | |
tree | 79380a193e1374fd7e4b697152b0b7aea304ddf8 /man_html.c | |
parent | 3f485a7ff74c3707363ed47362ccc8a7855b0f58 (diff) | |
download | mandoc-de2a1122a661dd4bd4004854891d44e87d63c6c2.tar.gz mandoc-de2a1122a661dd4bd4004854891d44e87d63c6c2.tar.zst mandoc-de2a1122a661dd4bd4004854891d44e87d63c6c2.zip |
Remove more pointer arithmetic passing via regions outside the array
that is undefined according to the C standard. Robert Elz <kre at
munnari dot oz dot au> pointed out i wasn't quite done yet.
Diffstat (limited to 'man_html.c')
-rw-r--r-- | man_html.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -1,4 +1,4 @@ -/* $Id: man_html.c,v 1.154 2018/08/16 23:43:37 schwarze Exp $ */ +/* $Id: man_html.c,v 1.155 2018/08/17 20:33:37 schwarze Exp $ */ /* * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2013,2014,2015,2017,2018 Ingo Schwarze <schwarze@openbsd.org> @@ -39,7 +39,7 @@ const struct roff_node *n, \ struct html *h -struct htmlman { +struct man_html_act { int (*pre)(MAN_ARGS); int (*post)(MAN_ARGS); }; @@ -70,7 +70,7 @@ static void man_root_post(const struct roff_meta *, static void man_root_pre(const struct roff_meta *, struct html *); -static const struct htmlman __mans[MAN_MAX - MAN_TH] = { +static const struct man_html_act man_html_acts[MAN_MAX - MAN_TH] = { { NULL, NULL }, /* TH */ { man_SH_pre, NULL }, /* SH */ { man_SS_pre, NULL }, /* SS */ @@ -109,7 +109,6 @@ static const struct htmlman __mans[MAN_MAX - MAN_TH] = { { man_UR_pre, NULL }, /* MT */ { NULL, NULL }, /* ME */ }; -static const struct htmlman *const mans = __mans - MAN_TH; /* @@ -318,8 +317,9 @@ print_man_node(MAN_ARGS) } assert(n->tok >= MAN_TH && n->tok < MAN_MAX); - if (mans[n->tok].pre) - child = (*mans[n->tok].pre)(man, n, h); + if (man_html_acts[n->tok - MAN_TH].pre != NULL) + child = (*man_html_acts[n->tok - MAN_TH].pre)(man, + n, h); /* Some block macros resume .nf in the body. */ if (save_fillmode && n->type == ROFFT_BODY) |