Commit 0b1ee9b5 authored by Teodor Sigaev's avatar Teodor Sigaev

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.
parent 22c0b1f0
...@@ -2056,11 +2056,11 @@ An hour of storm to place ...@@ -2056,11 +2056,11 @@ An hour of storm to place
The sculpture of these granite seams, The sculpture of these granite seams,
Upon a woman s face. E. J. Pratt (1882 1964) Upon a woman s face. E. J. Pratt (1882 1964)
', to_tsquery('granite&sea')); ', to_tsquery('granite&sea'));
headline headline
---------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------
<b>sea</b> an hour one night <b>sea</b> a thousand years,
An hour of storm to place A thousand years to trace
The sculpture of these <b>granite</b> The <b>granite</b> features of this cliff
(1 row) (1 row)
......
...@@ -360,7 +360,7 @@ hlfinditem(HLPRSTEXT * prs, QUERYTYPE * query, char *buf, int buflen) ...@@ -360,7 +360,7 @@ hlfinditem(HLPRSTEXT * prs, QUERYTYPE * query, char *buf, int buflen)
{ {
int i; int i;
ITEM *item = GETQUERY(query); ITEM *item = GETQUERY(query);
HLWORD *word = &(prs->words[prs->curwords - 1]); HLWORD *word;
while (prs->curwords + query->size >= prs->lenwords) while (prs->curwords + query->size >= prs->lenwords)
{ {
...@@ -368,6 +368,7 @@ hlfinditem(HLPRSTEXT * prs, QUERYTYPE * query, char *buf, int buflen) ...@@ -368,6 +368,7 @@ hlfinditem(HLPRSTEXT * prs, QUERYTYPE * query, char *buf, int buflen)
prs->words = (HLWORD *) repalloc((void *) prs->words, prs->lenwords * sizeof(HLWORD)); prs->words = (HLWORD *) repalloc((void *) prs->words, prs->lenwords * sizeof(HLWORD));
} }
word = &(prs->words[prs->curwords - 1]);
for (i = 0; i < query->size; i++) for (i = 0; i < query->size; i++)
{ {
if (item->type == VAL && item->length == buflen && strncmp(GETOPERAND(query) + item->distance, buf, buflen) == 0) if (item->type == VAL && item->length == buflen && strncmp(GETOPERAND(query) + item->distance, buf, buflen) == 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment