Fix regression in Ada aggregate assignment

A recent upstream patch of mine caused a regression in aggregate
assignment.  The bug was that add_component_interval didn't properly
update the array contents in one resize case.

I found furthermore that there was no test case that would provoke
this failure.  This patch fixes the bug and introduces a test.

gdb/ChangeLog
2021-01-07  Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (add_component_interval): Start loop using vector's
	updated size.

gdb/testsuite/ChangeLog
2021-01-07  Tom Tromey  <tromey@adacore.com>

	* gdb.ada/assign_arr.exp: Add 'others' test.
This commit is contained in:
Tom Tromey 2021-01-07 06:58:19 -07:00
parent 17d60030ae
commit d4813f1046
4 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2021-01-07 Tom Tromey <tromey@adacore.com>
* ada-lang.c (add_component_interval): Start loop using vector's
updated size.
2021-01-06 Tom Tromey <tromey@adacore.com>
* ada-lang.c (ada_evaluate_subexp) <BINOP_ADD, BINOP_SUB>:

View File

@ -9755,7 +9755,7 @@ add_component_interval (LONGEST low, LONGEST high,
}
indices.resize (indices.size () + 2);
for (j = size - 1; j >= i + 2; j -= 1)
for (j = indices.size () - 1; j >= i + 2; j -= 1)
indices[j] = indices[j - 2];
indices[i] = low;
indices[i + 1] = high;

View File

@ -1,3 +1,7 @@
2021-01-07 Tom Tromey <tromey@adacore.com>
* gdb.ada/assign_arr.exp: Add 'others' test.
2021-01-06 Tom Tromey <tromey@adacore.com>
* gdb.ada/fixed_points/pck.ads (Delta4): New constant.

View File

@ -30,3 +30,6 @@ runto "main_p324_051.adb:$bp_location"
gdb_test "print assign_arr_input.u2 :=(0.25,0.5,0.75)" \
" = \\(0\\.25, 0\\.5, 0\\.75\\)"
gdb_test "print assign_arr_input.u2 :=(0.25, others => 0.125)" \
" = \\(0\\.25, 0\\.125, 0\\.125\\)"