fix hlfinditem function. Thanks to "Stphane Bidoul" <stephane.bidoul@softwareag.com>.

The 'word' variable there is initialised from
the prs->words array, but immediately after,
that array may be reallocated, thus leaving
word pointing to unallocated memory.
This commit is contained in:
Teodor Sigaev 2003-09-22 13:32:33 +00:00
parent 22c0b1f0f4
commit 0b1ee9b5a3
2 changed files with 7 additions and 6 deletions

View File

@ -2056,11 +2056,11 @@ An hour of storm to place
The sculpture of these granite seams,
Upon a woman s face. E. J. Pratt (1882 1964)
', to_tsquery('granite&sea'));
headline
----------------------------------------------------------------------------------------------
<b>sea</b> an hour one night
An hour of storm to place
The sculpture of these <b>granite</b>
headline
--------------------------------------------------------------------------------------------------
<b>sea</b> a thousand years,
A thousand years to trace
The <b>granite</b> features of this cliff
(1 row)

View File

@ -360,7 +360,7 @@ hlfinditem(HLPRSTEXT * prs, QUERYTYPE * query, char *buf, int buflen)
{
int i;
ITEM *item = GETQUERY(query);
HLWORD *word = &(prs->words[prs->curwords - 1]);
HLWORD *word;
while (prs->curwords + query->size >= prs->lenwords)
{
@ -368,6 +368,7 @@ hlfinditem(HLPRSTEXT * prs, QUERYTYPE * query, char *buf, int buflen)
prs->words = (HLWORD *) repalloc((void *) prs->words, prs->lenwords * sizeof(HLWORD));
}
word = &(prs->words[prs->curwords - 1]);
for (i = 0; i < query->size; i++)
{
if (item->type == VAL && item->length == buflen && strncmp(GETOPERAND(query) + item->distance, buf, buflen) == 0)