From cb2fa5eab920b2cc847ccdaab4973eca47007af4 Mon Sep 17 00:00:00 2001 From: Joe Soroka Date: Fri, 8 Apr 2011 01:07:17 -0700 Subject: [PATCH] VLA fix [1/3]: added testcase demonstrating VLA bug --- tests/tcctest.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/tcctest.c b/tests/tcctest.c index 5192d40..8d558e3 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -2079,9 +2079,14 @@ void *bounds_checking_is_enabled() void c99_vla_test(int size1, int size2) { #if defined __i386__ || defined __x86_64__ - int tab1[size1 * size2][2], tab2[10][2]; + int size = size1 * size2; + int tab1[size][2], tab2[10][2]; void *tab1_ptr, *tab2_ptr, *bad_ptr; + /* "size" should have been 'captured' at tab1 declaration, + so modifying it should have no effect on VLA behaviour. */ + size = size-1; + printf("Test C99 VLA 1 (sizeof): "); printf("%s\n", (sizeof tab1 == size1 * size2 * 2 * sizeof(int)) ? "PASSED" : "FAILED"); tab1_ptr = tab1;