]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix calculation of how much shared memory is required to store a TOC.
authorFujii Masao <fujii@postgresql.org>
Fri, 15 Jan 2021 03:44:17 +0000 (12:44 +0900)
committerFujii Masao <fujii@postgresql.org>
Fri, 15 Jan 2021 03:45:25 +0000 (12:45 +0900)
Commit ac883ac453 refactored shm_toc_estimate() but changed its calculation
of shared memory size for TOC incorrectly. Previously this could cause too
large memory to be allocated.

Back-patch to v11 where the bug was introduced.

Author: Takayuki Tsunakawa
Discussion: https://postgr.es/m/TYAPR01MB2990BFB73170E2C4921E2C4DFEA80@TYAPR01MB2990.jpnprd01.prod.outlook.com

src/backend/storage/ipc/shm_toc.c

index bdd72c48fb87de45816f18379d3f4579aea67c60..2d865fa4d8b74afa36984b1c79a24f305e84d602 100644 (file)
@@ -265,8 +265,8 @@ shm_toc_estimate(shm_toc_estimator *e)
        Size            sz;
 
        sz = offsetof(shm_toc, toc_entry);
-       sz += add_size(sz, mul_size(e->number_of_keys, sizeof(shm_toc_entry)));
-       sz += add_size(sz, e->space_for_chunks);
+       sz = add_size(sz, mul_size(e->number_of_keys, sizeof(shm_toc_entry)));
+       sz = add_size(sz, e->space_for_chunks);
 
        return BUFFERALIGN(sz);
 }