aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/tsvector.c
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2014-03-07 13:13:33 +0200
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2014-03-07 13:14:33 +0200
commitad7b48ea08d6c33bae0a33c5f2a06272293c0f2f (patch)
tree4983169d22f00d8bae6b6f8f0880cd93b4913fb6 /src/backend/utils/adt/tsvector.c
parent2b8483d69d1be9700abae0dc7c48c5b7edb77498 (diff)
downloadpostgresql-ad7b48ea08d6c33bae0a33c5f2a06272293c0f2f.tar.gz
postgresql-ad7b48ea08d6c33bae0a33c5f2a06272293c0f2f.zip
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.
Diffstat (limited to 'src/backend/utils/adt/tsvector.c')
-rw-r--r--src/backend/utils/adt/tsvector.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/backend/utils/adt/tsvector.c b/src/backend/utils/adt/tsvector.c
index 6396ad85777..9fdaa5b8b97 100644
--- a/src/backend/utils/adt/tsvector.c
+++ b/src/backend/utils/adt/tsvector.c
@@ -124,7 +124,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)
{