mirror of
https://github.com/postgres/postgres.git
synced 2026-05-25 02:40:42 -04:00
Assert no duplicate keys in shm_toc_insert()
shm_toc_insert() silently accepts duplicate keys. Since shm_toc_lookup() returns the first matching entry, any later entry with the same key would be unreachable. Add an assertion to catch this. Author: Melanie Plageman <melanieplageman@gmail.com> Discussion: https://postgr.es/m/flat/a177a6dd-240b-455a-8f25-aca0b1c08c6e%40vondra.me
This commit is contained in:
parent
87f61f0c82
commit
43222b8e53
1 changed files with 7 additions and 0 deletions
|
|
@ -186,6 +186,13 @@ shm_toc_insert(shm_toc *toc, uint64 key, void *address)
|
|||
total_bytes = vtoc->toc_total_bytes;
|
||||
allocated_bytes = vtoc->toc_allocated_bytes;
|
||||
nentry = vtoc->toc_nentry;
|
||||
|
||||
#ifdef USE_ASSERT_CHECKING
|
||||
/* Verify no duplicate keys */
|
||||
for (Size i = 0; i < nentry; i++)
|
||||
Assert(vtoc->toc_entry[i].key != key);
|
||||
#endif
|
||||
|
||||
toc_bytes = offsetof(shm_toc, toc_entry) + nentry * sizeof(shm_toc_entry)
|
||||
+ allocated_bytes;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue