From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1888) id 864113858400; Tue, 14 Dec 2021 12:49:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 864113858400 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Patrick Palka To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-5950] c++: don't leak 'arglist' in build_new_op X-Act-Checkin: gcc X-Git-Author: Patrick Palka X-Git-Refname: refs/heads/master X-Git-Oldrev: c5ef950d0bb7d451e8d831f71351a5db4373aa9a X-Git-Newrev: 336dc544ebca867794a8e57c65afe303fd8ecc66 Message-Id: <20211214124921.864113858400@sourceware.org> Date: Tue, 14 Dec 2021 12:49:21 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Dec 2021 12:49:21 -0000 https://gcc.gnu.org/g:336dc544ebca867794a8e57c65afe303fd8ecc66 commit r12-5950-g336dc544ebca867794a8e57c65afe303fd8ecc66 Author: Patrick Palka Date: Tue Dec 14 07:48:54 2021 -0500 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. Diff: --- gcc/cp/call.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 28bd8e0c260..347df5da35d 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 *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);