From: Tom Tromey Date: Thu, 7 Jan 2021 13:58:19 +0000 (-0700) Subject: Fix regression in Ada aggregate assignment X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d4813f104685d3b36ab0c36a928264f99f5d3f17;p=binutils-gdb.git 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 * ada-lang.c (add_component_interval): Start loop using vector's updated size. gdb/testsuite/ChangeLog 2021-01-07 Tom Tromey * gdb.ada/assign_arr.exp: Add 'others' test. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 44dfabf62d4..dd8c01b710a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2021-01-07 Tom Tromey + + * ada-lang.c (add_component_interval): Start loop using vector's + updated size. + 2021-01-06 Tom Tromey * ada-lang.c (ada_evaluate_subexp) : diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 3bc7bdd6388..4751b6eeda3 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -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; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 8d5a2ee4599..0f3ef7aaaba 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2021-01-07 Tom Tromey + + * gdb.ada/assign_arr.exp: Add 'others' test. + 2021-01-06 Tom Tromey * gdb.ada/fixed_points/pck.ads (Delta4): New constant. diff --git a/gdb/testsuite/gdb.ada/assign_arr.exp b/gdb/testsuite/gdb.ada/assign_arr.exp index 2c793717325..ca894f057e2 100644 --- a/gdb/testsuite/gdb.ada/assign_arr.exp +++ b/gdb/testsuite/gdb.ada/assign_arr.exp @@ -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\\)"