]> granicus.if.org Git - postgresql/commitdiff
Suppress compiler warnings in dshash.c.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 3 Sep 2017 15:12:29 +0000 (11:12 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 3 Sep 2017 15:12:29 +0000 (11:12 -0400)
Some compilers complain, not unreasonably, about left-shifting an
int32 "1" and then assigning the result to an int64.  In practice
I sure hope that this data structure never gets large enough that
an overflow would actually occur; but let's cast the constant to
the right type to avoid the hazard.

In passing, fix a typo in dshash.h.

Amit Kapila, adjusted as per comment from Thomas Munro.

Discussion: https://postgr.es/m/CAA4eK1+5vfVMYtjK_NX8O3-42yM3o80qdqWnQzGquPrbq6mb+A@mail.gmail.com

src/backend/lib/dshash.c
src/include/lib/dshash.h

index 5dbd0c422753e5e52e6605d8dd26a91a805eff69..448e0587253e01f2c830e389d105f025908bbd74 100644 (file)
@@ -315,7 +315,7 @@ dshash_destroy(dshash_table *hash_table)
        ensure_valid_bucket_pointers(hash_table);
 
        /* Free all the entries. */
-       size = 1 << hash_table->size_log2;
+       size = ((size_t) 1) << hash_table->size_log2;
        for (i = 0; i < size; ++i)
        {
                dsa_pointer item_pointer = hash_table->buckets[i];
@@ -676,7 +676,7 @@ resize(dshash_table *hash_table, size_t new_size_log2)
        dsa_pointer new_buckets_shared;
        dsa_pointer *new_buckets;
        size_t          size;
-       size_t          new_size = 1 << new_size_log2;
+       size_t          new_size = ((size_t) 1) << new_size_log2;
        size_t          i;
 
        /*
@@ -707,10 +707,10 @@ resize(dshash_table *hash_table, size_t new_size_log2)
        new_buckets = dsa_get_address(hash_table->area, new_buckets_shared);
 
        /*
-        * We've allocate the new bucket array; all that remains to do now is to
+        * We've allocated the new bucket array; all that remains to do now is to
         * reinsert all items, which amounts to adjusting all the pointers.
         */
-       size = 1 << hash_table->control->size_log2;
+       size = ((size_t) 1) << hash_table->control->size_log2;
        for (i = 0; i < size; ++i)
        {
                dsa_pointer item_pointer = hash_table->buckets[i];
index 3fd91f8697778ef9f3dc915c5bf11bb1bb2bfd30..362871bfe019a7ea83b3d375e6fff5aff631e124 100644 (file)
@@ -39,7 +39,7 @@ typedef dshash_hash (*dshash_hash_function) (const void *v, size_t size,
  * members tranche_id and tranche_name do not need to be initialized when
  * attaching to an existing hash table.
  *
- * Compare and hash functions mus be supplied even when attaching, because we
+ * Compare and hash functions must be supplied even when attaching, because we
  * can't safely share function pointers between backends in general.  Either
  * the arg variants or the non-arg variants should be supplied; the other
  * function pointers should be NULL.  If the arg varants are supplied then the