From 00f6e0ee13c753d98e8665ad1ff2e992f43ef6e4 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sat, 16 Oct 1999 15:23:27 +0000 Subject: Further development: index work, phase I [originally from svn r237] --- keywords.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'keywords.c') diff --git a/keywords.c b/keywords.c index dad787d..c2d9ed6 100644 --- a/keywords.c +++ b/keywords.c @@ -93,6 +93,8 @@ keywordlist *get_keywords(paragraph *source) { kl->nkeywords = 0; kl->size = 0; kl->keys = NULL; + kl->nlooseends = kl->looseendssize = 0; + kl->looseends = NULL; for (; source; source = source->next) { /* * Number the chapter / section / list-item / whatever. @@ -113,6 +115,12 @@ keywordlist *get_keywords(paragraph *source) { p += ustrlen(p) + 1; } } + } else { + if (kl->nlooseends >= kl->looseendssize) { + kl->looseendssize += 32; + kl->looseends = resize(kl->looseends, kl->looseendssize); + } + kl->looseends[kl->nlooseends++] = source->kwtext; } } @@ -125,8 +133,15 @@ keywordlist *get_keywords(paragraph *source) { void free_keywords(keywordlist *kl) { int i; - for (i = 0; i < kl->nkeywords; i++) + while (kl->nlooseends) + free_word_list(kl->looseends[--kl->nlooseends]); + sfree(kl->looseends); + for (i = 0; i < kl->nkeywords; i++) { + if (kl->keys[i]) + free_word_list(kl->keys[i]->text); sfree(kl->keys[i]); + } + sfree(kl->keys); sfree(kl); } -- cgit v1.1