mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
Use "ssize_t" not "long" in max_stack_depth-related code.
This change adapts these functions to the machine's address width without depending on "long" to be the right size. (It isn't on Win64, for example.) While it seems unlikely anyone would care to run with a stack depth limit exceeding 2GB, this is part of a general push to avoid using type "long" to represent memory sizes. It's convenient to use ssize_t rather than the perhaps-more-obvious choice of size_t/Size, because the code involved depends on working with a signed data type. Our MAX_KILOBYTES limit already ensures that ssize_t will be sufficient to represent the maximum value of max_stack_depth. Extracted from a larger patch by Vladlen, plus additional hackery by me. Author: Vladlen Popolitov <v.popolitov@postgrespro.ru> Author: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/1a01f0-66ec2d80-3b-68487680@27595217
This commit is contained in:
@ -1589,7 +1589,7 @@ static void
|
||||
InitializeGUCOptionsFromEnvironment(void)
|
||||
{
|
||||
char *env;
|
||||
long stack_rlimit;
|
||||
ssize_t stack_rlimit;
|
||||
|
||||
env = getenv("PGPORT");
|
||||
if (env != NULL)
|
||||
@ -1613,7 +1613,7 @@ InitializeGUCOptionsFromEnvironment(void)
|
||||
stack_rlimit = get_stack_depth_rlimit();
|
||||
if (stack_rlimit > 0)
|
||||
{
|
||||
long new_limit = (stack_rlimit - STACK_DEPTH_SLOP) / 1024L;
|
||||
ssize_t new_limit = (stack_rlimit - STACK_DEPTH_SLOP) / 1024;
|
||||
|
||||
if (new_limit > 100)
|
||||
{
|
||||
@ -1627,7 +1627,7 @@ InitializeGUCOptionsFromEnvironment(void)
|
||||
new_limit = 2048;
|
||||
source = PGC_S_DYNAMIC_DEFAULT;
|
||||
}
|
||||
snprintf(limbuf, sizeof(limbuf), "%ld", new_limit);
|
||||
snprintf(limbuf, sizeof(limbuf), "%d", (int) new_limit);
|
||||
SetConfigOption("max_stack_depth", limbuf,
|
||||
PGC_POSTMASTER, source);
|
||||
}
|
||||
|
Reference in New Issue
Block a user