Add missing pointer dereference in pg_backend_memory_contexts view
authorDavid Rowley <[email protected]>
Sun, 28 Jul 2024 21:53:10 +0000 (09:53 +1200)
committerDavid Rowley <[email protected]>
Sun, 28 Jul 2024 21:53:10 +0000 (09:53 +1200)
32d3ed816 moved the logic for setting the context's name and ident into
a reusable function.  I missed adding a pointer dereference after
copying and pasting the code into that function.  The ident parameter is
a pointer to the ident variable in the calling function, so the
dereference is required to correctly determine if the contents of that
variable is NULL or not.

In passing, adjust the if condition to include an == NULL to make it
more clear that it's not checking for == '\0'.

Reported-by: Tom Lane, Coverity
Discussion: https://postgr.es/m/2256588.1722184287@sss.pgh.pa.us

src/backend/utils/adt/mcxtfuncs.c

index 199e68c1ae508f5c52b4a6bc1aabc43159e4e00f..5905958c1f5ddb1b9f43df9f0e60e1e5ded38c78 100644 (file)
@@ -55,7 +55,7 @@ get_memory_context_name_and_ident(MemoryContext context, const char **const name
     * To be consistent with logging output, we label dynahash contexts with
     * just the hash table name as with MemoryContextStatsPrint().
     */
-   if (ident && strcmp(*name, "dynahash") == 0)
+   if (*ident == NULL && strcmp(*name, "dynahash") == 0)
    {
        *name = *ident;
        *ident = NULL;