Re: guc: make dereference style consistent in check_backtrace_functions
Junwang Zhao <zhjwpku@gmail.com>
From: Junwang Zhao <zhjwpku@gmail.com>
To: Chao Li <li.evan.chao@gmail.com>
Cc: zhanghu <kongbaik228@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2026-02-26T11:04:24Z
Lists: pgsql-hackers
On Thu, Feb 26, 2026 at 5:21 PM Chao Li <li.evan.chao@gmail.com> wrote: > > > > > On Feb 26, 2026, at 15:03, zhanghu <kongbaik228@gmail.com> wrote: > > > > Hi, > > > > In check_backtrace_functions(), most accesses to the input string follow the pattern (*newval)[i]. However, the empty-string check is currently written as: > > > > if (*newval[0] == '\0') > > > > While functionally correct due to how the compiler handles the address-of-address context here, this form is semantically misleading. It relies on implicit operator precedence rather than explicit intent. > > > > The attached patch rewrites it as: > > > > if ((*newval)[0] == '\0') > > > > This change ensures semantic clarity and maintains a consistent dereferencing style throughout the function. No functional changes are introduced. > > > > Regards, > > Zhang Hu > > <v1-0001-guc-make-dereference-style-consistent-in-check_ba.patch> > > This is an interesting find. > > [] has higher precedence than *, so: > > - (*newval)[i] means to get the first string, then get the char at position i > - *newval[i] means to get the array element at position i, then get the first char > > When i is 0, (*newval)[0] and *newval[0] happen to yield the same result, so this isn't a functional bug. > > However, in the GUC context, newval is a point to a string rather than a two-dimension char array, *newval[i] is meaningless, so +1 for fixing this to improve readability. +1 The double pointer indicates an output parameter, the commit message should be adjusted though. > > Best regards, > -- > Chao Li (Evan) > HighGo Software Co., Ltd. > https://www.highgo.com/ > > > > > > -- Regards Junwang Zhao
Commits
-
Fix dereference in a couple of GUC check hooks
- 5f2350a043db 19 (unreleased) landed