diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2020-03-13 16:16:58 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2020-03-13 16:16:58 +0000 |
commit | e904e5abe5626e053fa0db3dbf1d46d5c4801d8b (patch) | |
tree | 5879387255280570c07e31c24427ffb1af5fc78d | |
parent | 42d5f8ddfdcc19abca690eba6b3c1bc230e43079 (diff) | |
download | mandoc-e904e5abe5626e053fa0db3dbf1d46d5c4801d8b.tar.gz |
Properly reset the validation part of the tagging module between files.
This fixes a crash in makewhatis(8) encountered by naddy@.
-rw-r--r-- | read.c | 2 | ||||
-rw-r--r-- | tag.c | 3 |
2 files changed, 5 insertions, 0 deletions
@@ -678,11 +678,13 @@ mparse_alloc(int options, enum mandoc_os os_e, const char *os_s) void mparse_reset(struct mparse *curp) { + tag_free(); roff_reset(curp->roff); roff_man_reset(curp->man); free_buf_list(curp->secondary); curp->secondary = NULL; curp->gzip = 0; + tag_alloc(); } void @@ -59,6 +59,8 @@ tag_free(void) struct tag_entry *entry; unsigned int slot; + if (tag_data.info.free == NULL) + return; entry = ohash_first(&tag_data, &slot); while (entry != NULL) { free(entry->nodes); @@ -66,6 +68,7 @@ tag_free(void) entry = ohash_next(&tag_data, &slot); } ohash_delete(&tag_data); + tag_data.info.free = NULL; } /* |