If amd64_windows_push_arguments is called with no arguments, then ARGS
can be NULL, and inside the passed-by-pointer block, memcpy is called
with this NULL, which is undefined behavior.
So this just disable the passed-by-pointer block if there are no
arguments.
Fixes the following ubsan error:
C:/gdb/src/gdb.git/gdb/amd64-windows-tdep.c:244:12: runtime error: null pointer passed as argument 2, which is declared to never be null
Approved-By: Tom Tromey <tom@tromey.com>
These arguments are replaced by pointers to a copy we are making
in inferior memory. So use a copy of the ARGS table, to avoid
modifying the original one. */
+ if (nargs > 0)
{
struct value **args1 = XALLOCAVEC (struct value *, nargs);