Call va_start correctly

The va_start macro needs to take the last named function parameter,
not NULL. From `man 3 va_start`:

     The parameter last is the name of the last parameter before the variable
     argument list, i.e., the last parameter of which the calling function
     knows the type.

Fixes the other issues from #1