From: Teodor Sigaev Date: Mon, 22 Sep 2003 13:32:33 +0000 (+0000) Subject: fix hlfinditem function. Thanks to "Stphane Bidoul" . X-Git-Tag: REL9_0_0~14331 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=0b1ee9b5a3b56724b4ee23dbbfb083b540aed8e4;p=pg-rex%2Fsyncrep.git fix hlfinditem function. Thanks to "Stphane Bidoul" . 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. --- diff --git a/contrib/tsearch2/expected/tsearch2.out b/contrib/tsearch2/expected/tsearch2.out index 8571e59bbb..bdcdd952cf 100644 --- a/contrib/tsearch2/expected/tsearch2.out +++ b/contrib/tsearch2/expected/tsearch2.out @@ -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 ----------------------------------------------------------------------------------------------- - sea an hour one night -An hour of storm to place -The sculpture of these granite + headline +-------------------------------------------------------------------------------------------------- + sea a thousand years, +A thousand years to trace +The granite features of this cliff (1 row) diff --git a/contrib/tsearch2/ts_cfg.c b/contrib/tsearch2/ts_cfg.c index ad06d90d9a..1d3ca86a09 100644 --- a/contrib/tsearch2/ts_cfg.c +++ b/contrib/tsearch2/ts_cfg.c @@ -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)