From d4813f104685d3b36ab0c36a928264f99f5d3f17 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 7 Jan 2021 06:58:19 -0700 Subject: [PATCH] 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. --- gdb/ChangeLog | 5 +++++ gdb/ada-lang.c | 2 +- gdb/testsuite/ChangeLog | 4 ++++ gdb/testsuite/gdb.ada/assign_arr.exp | 3 +++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 44dfabf62d..dd8c01b710 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 3bc7bdd638..4751b6eeda 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 8d5a2ee459..0f3ef7aaab 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 2c79371732..ca894f057e 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\\)" -- 2.34.1