summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--read.c2
-rw-r--r--tag.c3
2 files changed, 5 insertions, 0 deletions
diff --git a/read.c b/read.c
index 527ecf9f..845976e8 100644
--- a/read.c
+++ b/read.c
@@ -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
diff --git a/tag.c b/tag.c
index 0db354c1..50502e58 100644
--- a/tag.c
+++ b/tag.c
@@ -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;
}
/*