diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2017-03-09 15:18:59 -0500 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-03-28 21:59:23 -0400 |
commit | 4cb824699e12c39fad97fb3d9085ced0d14c067c (patch) | |
tree | 9a835d8efb7739e6436d3fc24b4b5a290b95df7d /src/backend/nodes/copyfuncs.c | |
parent | 66b764341ba12206f01e2600713bdc3abdb070b3 (diff) | |
download | postgresql-4cb824699e12c39fad97fb3d9085ced0d14c067c.tar.gz postgresql-4cb824699e12c39fad97fb3d9085ced0d14c067c.zip |
Cast result of copyObject() to correct type
copyObject() is declared to return void *, which allows easily assigning
the result independent of the input, but it loses all type checking.
If the compiler supports typeof or something similar, cast the result to
the input type. This creates a greater amount of type safety. In some
cases, where the result is assigned to a generic type such as Node * or
Expr *, new casts are now necessary, but in general casts are now
unnecessary in the normal case and indicate that something unusual is
happening.
Reviewed-by: Mark Dilger <hornschnorter@gmail.com>
Diffstat (limited to 'src/backend/nodes/copyfuncs.c')
-rw-r--r-- | src/backend/nodes/copyfuncs.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index c23d5c52851..1c88d601bd1 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -43,7 +43,7 @@ /* Copy a field that is a pointer to some kind of Node or Node tree */ #define COPY_NODE_FIELD(fldname) \ - (newnode->fldname = copyObject(from->fldname)) + (newnode->fldname = copyObjectImpl(from->fldname)) /* Copy a field that is a pointer to a Bitmapset */ #define COPY_BITMAPSET_FIELD(fldname) \ @@ -4507,7 +4507,7 @@ _copyDropSubscriptionStmt(const DropSubscriptionStmt *from) */ #define COPY_NODE_CELL(new, old) \ (new) = (ListCell *) palloc(sizeof(ListCell)); \ - lfirst(new) = copyObject(lfirst(old)); + lfirst(new) = copyObjectImpl(lfirst(old)); static List * _copyList(const List *from) @@ -4610,13 +4610,13 @@ _copyForeignKeyCacheInfo(const ForeignKeyCacheInfo *from) /* - * copyObject + * copyObjectImpl -- implementation of copyObject(); see nodes/nodes.h * * Create a copy of a Node tree or list. This is a "deep" copy: all * substructure is copied too, recursively. */ void * -copyObject(const void *from) +copyObjectImpl(const void *from) { void *retval; |