- Update a few places to account for va_copy().

- Create a separate 'return values' section and move some statements about
  return values to that section.
- Note that each invocation of va_start() and va_copy() must be paired with
  va_end() in the same function.

MFC after:	1 week
This commit is contained in:
John Baldwin 2014-02-05 17:41:00 +00:00
parent 96c3037416
commit 484e5bdd2b

View File

@ -59,7 +59,7 @@ The include file
.In stdarg.h .In stdarg.h
declares a type declares a type
.Pq Em va_list .Pq Em va_list
and defines three macros for stepping and defines four macros for stepping
through a list of arguments whose number and types are not known to through a list of arguments whose number and types are not known to
the called function. the called function.
.Pp .Pp
@ -77,7 +77,8 @@ The
macro initializes macro initializes
.Fa ap .Fa ap
for subsequent use by for subsequent use by
.Fn va_arg .Fn va_arg ,
.Fn va_copy ,
and and
.Fn va_end , .Fn va_end ,
and must be called first. and must be called first.
@ -93,10 +94,6 @@ macro, it should not be declared as a register variable, or as a
function or an array type. function or an array type.
.Pp .Pp
The The
.Fn va_start
macro returns no value.
.Pp
The
.Fn va_arg .Fn va_arg
macro expands to an expression that has the type and value of the next macro expands to an expression that has the type and value of the next
argument in the call. argument in the call.
@ -105,7 +102,9 @@ The parameter
is the is the
.Em va_list Fa ap .Em va_list Fa ap
initialized by initialized by
.Fn va_start . .Fn va_start
or
.Fn va_copy .
Each call to Each call to
.Fn va_arg .Fn va_arg
modifies modifies
@ -152,18 +151,28 @@ the same number of times as called with
.Fa src . .Fa src .
.Pp .Pp
The The
.Fn va_end
macro cleans up any state associated with the variable argument list
.Fa ap .
.Pp
Each invocation of
.Fn va_start
or
.Fn va_copy .Fn va_copy
macro returns no value. must be paired with a corresponding invocation of
.Fn va_end
in the same function.
.Sh RETURN VALUES
The
.Fn va_arg
macro returns the value of the next argument.
.Pp .Pp
The The
.Fn va_start ,
.Fn va_copy ,
and
.Fn va_end .Fn va_end
macro handles a normal return from the function whose variable argument macros return no value.
list was initialized by
.Fn va_start .
.Pp
The
.Fn va_end
macro returns no value.
.Sh EXAMPLES .Sh EXAMPLES
The function The function
.Em foo .Em foo