1 #include <stdarg.h>
2 
3 va_list global;
4 
vat(va_list param,...)5 void vat(va_list param, ...)
6 {
7   va_list local;
8 
9   va_start (local, param);
10   va_copy (global, local);
11   va_copy (param, local);
12   if (va_arg (local, int) != 1)
13     abort();
14   va_end (local);
15   if (va_arg (global, int) != 1)
16     abort();
17   va_end (global);
18   if (va_arg (param, int) != 1)
19     abort();
20   va_end (param);
21 
22   va_start (param, param);
23   va_start (global, param);
24   va_copy (local, param);
25   if (va_arg (local, int) != 1)
26     abort();
27   va_end (local);
28   va_copy (local, global);
29   if (va_arg (local, int) != 1)
30     abort();
31   va_end (local);
32   if (va_arg (global, int) != 1)
33     abort();
34   va_end (global);
35   if (va_arg (param, int) != 1)
36     abort();
37   va_end (param);
38 }
39 
main(void)40 int main(void)
41 {
42   va_list t;
43   vat (t, 1);
44   exit (0);
45 }
46