aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/debug.adb
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2023-03-27 00:55:08 +0200
committerMarc Poulhiès <poulhies@adacore.com>2023-05-26 09:29:18 +0200
commit9f6cee820f9c8d263dfcd1772127268508360838 (patch)
treeb902f79dc3e7d9174d53de713afa1ed24de5e6db /gcc/ada/debug.adb
parent6b19eb2490675cacf72b8225d953d73029bc53fb (diff)
downloadgcc-9f6cee820f9c8d263dfcd1772127268508360838.zip
gcc-9f6cee820f9c8d263dfcd1772127268508360838.tar.gz
gcc-9f6cee820f9c8d263dfcd1772127268508360838.tar.bz2
ada: Fix double free on finalization of Vector in array aggregate
The handling of finalization is delicate during the expansion of aggregates since the generated assignments must not cause the finalization of the RHS. That's why the No_Ctrl_Actions flag is set on them and the adjustments are generated manually. This was not done in the case of an array of array with controlled component when its subaggregates are not expanded in place but instead are replaced by temporaries, leading to double free or memory corruption. gcc/ada/ * exp_aggr.adb (Initialize_Array_Component): Remove obsolete code. (Expand_Array_Aggregate): In the case where a temporary is created and the parent is an assignment statement with No_Ctrl_Actions set, set Is_Ignored_Transient on the temporary.
Diffstat (limited to 'gcc/ada/debug.adb')
0 files changed, 0 insertions, 0 deletions