aboutsummaryrefslogtreecommitdiff
path: root/contrib/test_shm_mq/setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/test_shm_mq/setup.c')
-rw-r--r--contrib/test_shm_mq/setup.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/contrib/test_shm_mq/setup.c b/contrib/test_shm_mq/setup.c
index 7ad11157cf2..612480fd4e5 100644
--- a/contrib/test_shm_mq/setup.c
+++ b/contrib/test_shm_mq/setup.c
@@ -92,7 +92,7 @@ setup_dynamic_shared_memory(int64 queue_size, int nworkers,
{
shm_toc_estimator e;
int i;
- uint64 segsize;
+ Size segsize;
dsm_segment *seg;
shm_toc *toc;
test_shm_mq_header *hdr;
@@ -101,8 +101,12 @@ setup_dynamic_shared_memory(int64 queue_size, int nworkers,
if (queue_size < 0 || ((uint64) queue_size) < shm_mq_minimum_size)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("queue size must be at least %lu bytes",
- (unsigned long) shm_mq_minimum_size)));
+ errmsg("queue size must be at least %zu bytes",
+ shm_mq_minimum_size)));
+ if (queue_size != ((Size) queue_size))
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("queue size overflows size_t")));
/*
* Estimate how much shared memory we need.
@@ -116,7 +120,7 @@ setup_dynamic_shared_memory(int64 queue_size, int nworkers,
shm_toc_initialize_estimator(&e);
shm_toc_estimate_chunk(&e, sizeof(test_shm_mq_header));
for (i = 0; i <= nworkers; ++i)
- shm_toc_estimate_chunk(&e, queue_size);
+ shm_toc_estimate_chunk(&e, (Size) queue_size);
shm_toc_estimate_keys(&e, 2 + nworkers);
segsize = shm_toc_estimate(&e);
@@ -138,7 +142,8 @@ setup_dynamic_shared_memory(int64 queue_size, int nworkers,
{
shm_mq *mq;
- mq = shm_mq_create(shm_toc_allocate(toc, queue_size), queue_size);
+ mq = shm_mq_create(shm_toc_allocate(toc, (Size) queue_size),
+ (Size) queue_size);
shm_toc_insert(toc, i + 1, mq);
if (i == 0)