Add casts to simplehash.h to silence C++ warnings.
authorTom Lane
Thu, 3 Nov 2022 14:47:31 +0000 (10:47 -0400)
committerTom Lane
Thu, 3 Nov 2022 14:47:31 +0000 (10:47 -0400)
Casting the result of palloc etc. to the intended type is more per
project style anyway.

(The fact that cpluspluscheck doesn't notice these problems is
because it doesn't expand any macros, which seems like a troubling
shortcoming.  Don't have a good idea about improving that.)

Back-patch to v13, which is as far as the patch applies cleanly;
doesn't seem worth working harder.

David Geier

Discussion: https://postgr.es/m/aa5d88a3-71f4-3455-11cf-82de0372c941@gmail.com

src/include/lib/simplehash.h

index a4a25c57f21810471c4d68f30038580ef6f726a2..816ee5a0acd37491ae20c2e16830e31bdeda50d7 100644 (file)
@@ -437,9 +437,9 @@ SH_CREATE(MemoryContext ctx, uint32 nelements, void *private_data)
    uint64      size;
 
 #ifdef SH_RAW_ALLOCATOR
-   tb = SH_RAW_ALLOCATOR(sizeof(SH_TYPE));
+   tb = (SH_TYPE *) SH_RAW_ALLOCATOR(sizeof(SH_TYPE));
 #else
-   tb = MemoryContextAllocZero(ctx, sizeof(SH_TYPE));
+   tb = (SH_TYPE *) MemoryContextAllocZero(ctx, sizeof(SH_TYPE));
    tb->ctx = ctx;
 #endif
    tb->private_data = private_data;
@@ -449,7 +449,7 @@ SH_CREATE(MemoryContext ctx, uint32 nelements, void *private_data)
 
    SH_COMPUTE_PARAMETERS(tb, size);
 
-   tb->data = SH_ALLOCATE(tb, sizeof(SH_ELEMENT_TYPE) * tb->size);
+   tb->data = (SH_ELEMENT_TYPE *) SH_ALLOCATE(tb, sizeof(SH_ELEMENT_TYPE) * tb->size);
 
    return tb;
 }
@@ -494,7 +494,7 @@ SH_GROW(SH_TYPE * tb, uint64 newsize)
    /* compute parameters for new table */
    SH_COMPUTE_PARAMETERS(tb, newsize);
 
-   tb->data = SH_ALLOCATE(tb, sizeof(SH_ELEMENT_TYPE) * tb->size);
+   tb->data = (SH_ELEMENT_TYPE *) SH_ALLOCATE(tb, sizeof(SH_ELEMENT_TYPE) * tb->size);
 
    newdata = tb->data;
 
@@ -1060,7 +1060,7 @@ SH_STAT(SH_TYPE * tb)
    double      fillfactor;
    uint32      i;
 
-   uint32     *collisions = palloc0(tb->size * sizeof(uint32));
+   uint32     *collisions = (uint32 *) palloc0(tb->size * sizeof(uint32));
    uint32      total_collisions = 0;
    uint32      max_collisions = 0;
    double      avg_collisions;