Overly compact coding in makeOrderedSetArgs() led to a platform dependency:
if the compiler chose to execute the subexpressions in the wrong order,
list_length() might get applied to an already-modified List, giving a
value we didn't want. Per buildfarm.
core_yyscan_t yyscanner)
{
FunctionParameter *lastd = (FunctionParameter *) llast(directargs);
+ int ndirectargs;
/* No restriction unless last direct arg is VARIADIC */
if (lastd->mode == FUNC_PARAM_VARIADIC)
orderedargs = NIL;
}
+ /* don't merge into the next line, as list_concat changes directargs */
+ ndirectargs = list_length(directargs);
+
return list_make2(list_concat(directargs, orderedargs),
- makeInteger(list_length(directargs)));
+ makeInteger(ndirectargs));
}
/* insertSelectOptions()