Silence another gcc 11 warning.
authorTom Lane <[email protected]>
Thu, 28 Jan 2021 22:18:23 +0000 (17:18 -0500)
committerTom Lane <[email protected]>
Thu, 28 Jan 2021 22:18:48 +0000 (17:18 -0500)
Per buildfarm and local experimentation, bleeding-edge gcc isn't
convinced that the MemSet in reorder_function_arguments() is safe.
Shut it up by adding an explicit check that pronargs isn't negative,
and by changing MemSet to memset.  (It appears that either change is
enough to quiet the warning at -O2, but let's do both to be sure.)

src/backend/optimizer/util/clauses.c

index 17844a3a48099ee6c17f0880fcf4c2fbf48991b1..af63a2c7cf7a2bec5558d699d8a4d82f3e153837 100644 (file)
@@ -4068,9 +4068,9 @@ reorder_function_arguments(List *args, HeapTuple func_tuple)
    int         i;
 
    Assert(nargsprovided <= pronargs);
-   if (pronargs > FUNC_MAX_ARGS)
+   if (pronargs < 0 || pronargs > FUNC_MAX_ARGS)
        elog(ERROR, "too many function arguments");
-   MemSet(argarray, 0, pronargs * sizeof(Node *));
+   memset(argarray, 0, pronargs * sizeof(Node *));
 
    /* Deconstruct the argument list into an array indexed by argnumber */
    i = 0;