+++ /dev/null
-#include <stdlib.h>
- #include <stdarg.h>
- #include <string.h>
- #define DO_VA_COPY(d,s) memcpy((void *)(d), (void *)(s)), sizeof(*(s))
- void test(char *str, ...)
- {
- va_list ap, ap2;
- int i;
- va_start(ap, str);
- DO_VA_COPY(ap2, ap);
- for (i = 1; i <= 9; i++) {
- int k = (int)va_arg(ap, int);
- if (k != i)
- abort();
- }
- DO_VA_COPY(ap, ap2);
- for (i = 1; i <= 9; i++) {
- int k = (int)va_arg(ap, int);
- if (k != i)
- abort();
- }
- va_end(ap);
- }
- int main(int argc, char *argv[])
- {
- test(test, 1, 2, 3, 4, 5, 6, 7, 8, 9);
- exit(0);
- }