diff options
| author | Simon Tatham <anakin@pobox.com> | 1999-10-16 15:23:27 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 1999-10-16 15:23:27 +0000 |
| commit | 00f6e0ee13c753d98e8665ad1ff2e992f43ef6e4 (patch) | |
| tree | c96a462edd1b2ebb631f90420ceb51e266114576 /keywords.c | |
| parent | 9972b0f0d1ce6e08ce6f9505980c9c889ae994bc (diff) | |
| download | halibut-00f6e0ee13c753d98e8665ad1ff2e992f43ef6e4.zip halibut-00f6e0ee13c753d98e8665ad1ff2e992f43ef6e4.tar.gz halibut-00f6e0ee13c753d98e8665ad1ff2e992f43ef6e4.tar.bz2 halibut-00f6e0ee13c753d98e8665ad1ff2e992f43ef6e4.tar.xz | |
Further development: index work, phase I
[originally from svn r237]
Diffstat (limited to 'keywords.c')
| -rw-r--r-- | keywords.c | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -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); } |