Avoid memcpy() with same source and destination address.
The behavior of that is undefined, although unlikely to lead to problems in practice. Found by running regression tests with Valgrind.
This commit is contained in:
parent
ff2e0e1f96
commit
c7a186e392
@ -128,20 +128,19 @@ dispell_lexize(PG_FUNCTION_ARGS)
|
||||
if (res == NULL)
|
||||
PG_RETURN_POINTER(NULL);
|
||||
|
||||
ptr = cptr = res;
|
||||
while (ptr->lexeme)
|
||||
cptr = res;
|
||||
for (ptr = cptr; ptr->lexeme; ptr++)
|
||||
{
|
||||
if (searchstoplist(&(d->stoplist), ptr->lexeme))
|
||||
{
|
||||
pfree(ptr->lexeme);
|
||||
ptr->lexeme = NULL;
|
||||
ptr++;
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(cptr, ptr, sizeof(TSLexeme));
|
||||
if (cptr != ptr)
|
||||
memcpy(cptr, ptr, sizeof(TSLexeme));
|
||||
cptr++;
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
cptr->lexeme = NULL;
|
||||
|
@ -125,7 +125,8 @@ uniqueentry(WordEntryIN *a, int l, char *buf, int *outbuflen)
|
||||
buflen += res->poslen * sizeof(WordEntryPos) + sizeof(uint16);
|
||||
}
|
||||
res++;
|
||||
memcpy(res, ptr, sizeof(WordEntryIN));
|
||||
if (res != ptr)
|
||||
memcpy(res, ptr, sizeof(WordEntryIN));
|
||||
}
|
||||
else if (ptr->entry.haspos)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user