From e66fcce67272f5aece55e834b34ed318b67f921b Mon Sep 17 00:00:00 2001
From: Neil Conway <neilc@samurai.com>
Date: Wed, 4 Feb 2004 01:11:47 +0000
Subject: [PATCH] Use memmove() rather than memcpy() in set_var_from_var(). If
 this function is asked to assign a variable to itself, it will result in
 doing a memcpy() on an entirely-overlapping memory range, which results in
 undefined behavior according to ANSI C. That said, it is unlikely to actually
 do anything bad on any sane libc, but this keeps valgrind quiet.

---
 src/backend/utils/adt/numeric.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c
index e825b101a16..f093c414ee5 100644
--- a/src/backend/utils/adt/numeric.c
+++ b/src/backend/utils/adt/numeric.c
@@ -14,7 +14,7 @@
  * Copyright (c) 1998-2003, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/adt/numeric.c,v 1.70 2003/12/02 00:26:59 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/adt/numeric.c,v 1.71 2004/02/04 01:11:47 neilc Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2729,7 +2729,7 @@ set_var_from_var(NumericVar *value, NumericVar *dest)
 
 	digitbuf_free(dest->buf);
 
-	memcpy(dest, value, sizeof(NumericVar));
+	memmove(dest, value, sizeof(NumericVar));
 	dest->buf = newbuf;
 	dest->digits = newbuf + 1;
 }
-- 
GitLab