Commit 0fb9e4ac authored by Andres Freund's avatar Andres Freund

Fix uninitialized variable in dshash.c.

A bugfix for commit 8c0d7baf.  The code
would have crashed if hashtable->size_log2 ever had the same value as
hashtable->control->size_log2 by coincidence.

Per Valgrind.

Author: Thomas Munro
Reported-By: Tomas Vondra
Discussion: https://postgr.es/m/e72fb33c-4f31-f276-e972-263d9b59554d%402ndquadrant.com
parent a1924a4e
...@@ -249,6 +249,7 @@ dshash_create(dsa_area *area, const dshash_parameters *params, void *arg) ...@@ -249,6 +249,7 @@ dshash_create(dsa_area *area, const dshash_parameters *params, void *arg)
} }
hash_table->buckets = dsa_get_address(area, hash_table->buckets = dsa_get_address(area,
hash_table->control->buckets); hash_table->control->buckets);
hash_table->size_log2 = hash_table->control->size_log2;
return hash_table; return hash_table;
} }
...@@ -280,6 +281,14 @@ dshash_attach(dsa_area *area, const dshash_parameters *params, ...@@ -280,6 +281,14 @@ dshash_attach(dsa_area *area, const dshash_parameters *params,
hash_table->find_exclusively_locked = false; hash_table->find_exclusively_locked = false;
Assert(hash_table->control->magic == DSHASH_MAGIC); Assert(hash_table->control->magic == DSHASH_MAGIC);
/*
* These will later be set to the correct values by
* ensure_valid_bucket_pointers(), at which time we'll be holding a
* partition lock for interlocking against concurrent resizing.
*/
hash_table->buckets = NULL;
hash_table->size_log2 = 0;
return hash_table; return hash_table;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment