summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
Diffstat (limited to 'array.c')
-rw-r--r--array.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/array.c b/array.c
index 529c936c22..61b6344b4e 100644
--- a/array.c
+++ b/array.c
@@ -81,12 +81,22 @@ ary_new()
return ary_new2(ARY_DEFAULT_SIZE);
}
+#ifdef __STDC__
+#include <stdarg.h>
+#define va_init_list(a,b) va_start(a,b)
+#else
#include <varargs.h>
+#define va_init_list(a,b) va_start(a)
+#endif
VALUE
+#ifdef __STDC__
+ary_new3(int n, ...)
+#else
ary_new3(n, va_alist)
int n;
va_dcl
+#endif
{
va_list ar;
VALUE ary;
@@ -97,7 +107,7 @@ ary_new3(n, va_alist)
}
ary = ary_new2(n<ARY_DEFAULT_SIZE?ARY_DEFAULT_SIZE:n);
- va_start(ar);
+ va_init_list(ar, n);
for (i=0; i<n; i++) {
RARRAY(ary)->ptr[i] = va_arg(ar, VALUE);
}