From b3d862e27edf476f65b8282e48001cac6c8b6555 Mon Sep 17 00:00:00 2001 From: Ettl Martin Date: Wed, 23 May 2012 23:32:58 +0200 Subject: [PATCH] #3838 added todo-testcase --- test/testbufferoverrun.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/test/testbufferoverrun.cpp b/test/testbufferoverrun.cpp index 16afb56bb..fbe920a5e 100644 --- a/test/testbufferoverrun.cpp +++ b/test/testbufferoverrun.cpp @@ -110,6 +110,7 @@ private: TEST_CASE(array_index_40); // loop variable calculation, taking address TEST_CASE(array_index_41); // structs with the same name TEST_CASE(array_index_42); + TEST_CASE(array_index_43); // struct with array TEST_CASE(array_index_multidim); TEST_CASE(array_index_switch_in_for); TEST_CASE(array_index_for_in_for); // FP: #2634 @@ -1376,6 +1377,37 @@ private: ASSERT_EQUALS("", errout.str()); } + void array_index_43() { // #3838 + + check("int f( ) \n" + "{\n" + " struct {\n" + " int arr[ 3 ];\n" + " } var[ 1 ];\n" + " int y;\n" + " var[ 0 ].arr[ 0 ] = 0;\n" + " var[ 0 ].arr[ 1 ] = 1;\n" + " var[ 0 ].arr[ 2 ] = 2;\n" + " y = var[ 0 ].arr[ 3 ];\n" + " return y;\n" + "}\n"); + TODO_ASSERT_EQUALS("[test.cpp:10]: (error) Array 'var[0].arr[3]' index 3 out of bounds\n","", errout.str()); + + check("int f( ) \n" + "{\n" + " struct {\n" + " int arr[ 3 ];\n" + " } var[ 1 ];\n" + " int y;\n" + " var[ 0 ].arr[ 0 ] = 0;\n" + " var[ 0 ].arr[ 1 ] = 1;\n" + " var[ 0 ].arr[ 2 ] = 2;\n" + " y = var[ 0 ].arr[ 2 ];\n" + " return y;\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); + } + void array_index_multidim() { check("void f()\n" "{\n"