diff options
author | Patrick Palka <ppalka@redhat.com> | 2021-12-14 07:48:54 -0500 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2021-12-14 07:48:54 -0500 |
commit | 336dc544ebca867794a8e57c65afe303fd8ecc66 (patch) | |
tree | a453169989083cda5fed2280a88c936abe0c1f20 /gcc | |
parent | c5ef950d0bb7d451e8d831f71351a5db4373aa9a (diff) | |
download | gcc-336dc544ebca867794a8e57c65afe303fd8ecc66.zip gcc-336dc544ebca867794a8e57c65afe303fd8ecc66.tar.gz gcc-336dc544ebca867794a8e57c65afe303fd8ecc66.tar.bz2 |
c++: don't leak 'arglist' in build_new_op
gcc/cp/ChangeLog:
* call.c (build_new_op): Use releasing_vec for arglist. Declare
conv in the scope it's used.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/call.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 28bd8e0c..347df5d 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -6461,13 +6461,12 @@ build_new_op (const op_location_t &loc, enum tree_code code, int flags, tsubst_flags_t complain) { struct z_candidate *candidates = 0, *cand; - vec<tree, va_gc> *arglist; + releasing_vec arglist; tree result = NULL_TREE; bool result_valid_p = false; enum tree_code code2 = ERROR_MARK; enum tree_code code_orig_arg1 = ERROR_MARK; enum tree_code code_orig_arg2 = ERROR_MARK; - conversion *conv; void *p; bool strict_p; bool any_viable_p; @@ -6543,7 +6542,6 @@ build_new_op (const op_location_t &loc, enum tree_code code, int flags, arg2_type = integer_type_node; } - vec_alloc (arglist, 3); arglist->quick_push (arg1); if (arg2 != NULL_TREE) arglist->quick_push (arg2); @@ -6814,7 +6812,7 @@ build_new_op (const op_location_t &loc, enum tree_code code, int flags, corresponding parameters of the selected operation function, except that the second standard conversion sequence of a user-defined conversion sequence (12.3.3.1.2) is not applied." */ - conv = cand->convs[0]; + conversion *conv = cand->convs[0]; if (conv->user_conv_p) { conv = strip_standard_conversion (conv); |