aboutsummaryrefslogtreecommitdiff
path: root/SingleSource/Regression/C/gcc-c-torture/execute/va-arg-13.c
diff options
context:
space:
mode:
Diffstat (limited to 'SingleSource/Regression/C/gcc-c-torture/execute/va-arg-13.c')
-rw-r--r--SingleSource/Regression/C/gcc-c-torture/execute/va-arg-13.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/SingleSource/Regression/C/gcc-c-torture/execute/va-arg-13.c b/SingleSource/Regression/C/gcc-c-torture/execute/va-arg-13.c
new file mode 100644
index 00000000..0962f7e6
--- /dev/null
+++ b/SingleSource/Regression/C/gcc-c-torture/execute/va-arg-13.c
@@ -0,0 +1,38 @@
+/* derived from mozilla source code */
+
+#include <stdarg.h>
+
+typedef struct {
+ void *stream;
+ va_list ap;
+ int nChar;
+} ScanfState;
+
+void dummy (va_list vap)
+{
+ if (va_arg (vap, int) != 1234) abort();
+ return;
+}
+
+void test (int fmt, ...)
+{
+ ScanfState state, *statep;
+
+ statep = &state;
+
+ va_start (statep->ap, fmt);
+ dummy (statep->ap);
+ va_end (statep->ap);
+
+ va_start (state.ap, fmt);
+ dummy (state.ap);
+ va_end (state.ap);
+
+ return;
+}
+
+int main (void)
+{
+ test (456, 1234);
+ exit (0);
+}