]> granicus.if.org Git - postgresql/commitdiff
Use memmove() rather than memcpy() in set_var_from_var(). If this function
authorNeil Conway <neilc@samurai.com>
Wed, 4 Feb 2004 01:11:47 +0000 (01:11 +0000)
committerNeil Conway <neilc@samurai.com>
Wed, 4 Feb 2004 01:11:47 +0000 (01:11 +0000)
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

index e825b101a1656070629673f6edba6aace194ae9a..f093c414ee5ea9a7dc84f6d88be7ca2dc3b63b80 100644 (file)
@@ -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;
 }