From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by sourceware.org (Postfix) with ESMTPS id F18213857715; Wed, 16 Aug 2023 20:16:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F18213857715 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1692217001; x=1692821801; i=anlauf@gmx.de; bh=IhCV+ped0m3rioN3zaY0o/cBqvv+Bc22jiOcz6GPmmQ=; h=X-UI-Sender-Class:From:To:Subject:Date; b=ex6yim1lSm57jmptAfhFpXie6FIPFiDKyfbOs6CAOc1/dkS6atc/u1oi3msfHoxscc0+age N8Ll5axgZq1nA2AOBHgeqbXx+3Gp6bPDm7Eol9zg6nWcnyHJz54EDzz/rIGj6NHmV6XnpNJdN B0l7lViZYIXzvPW168ST3MCMipkW5ENdaFREVEFkvmAtHihA1Kl2IO38bTI9GOEmCaoovCSvx fvmzn1AveCySUOnGQirFnK36o1eKJgirGUA7JKZ0q8+s07WQIcGQGhnAdr5450iA/6xoPHpar Yjazr8EA8yOhUAeknv5hHB8Wqzg2nXMIhVj1vFbKjHlHZALvVPPQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [93.207.86.80] ([93.207.86.80]) by web-mail.gmx.net (3c-app-gmx-bap14.server.lan [172.19.172.84]) (via HTTP); Wed, 16 Aug 2023 22:16:41 +0200 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH,committed] Fortran: fix memleak for character,value dummy of bind(c) procedure [PR110360] Content-Type: multipart/mixed; boundary=nika-72bf7eaa-5dab-4ec5-8d6d-ec98509fc42d Date: Wed, 16 Aug 2023 22:16:41 +0200 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:WLs2UXM8mDDbJUsBvn9YVx8NddLB3cx/KCEWe7Fbmpiw6sQ0F1R6qrEVNe2c1eDNE57Lg 6Pw9FU+qoB49cQqLtrr0jSX3F7ZzA4zAlmBvH8eGh5+oYfecbZwHmf5GTBiStP/xbN8kQH/ZeRvi P4d7yiEUqgEZWA9SAf9NjDo7/jZHD4IqDOaZKtJ20war/0YzgQQbl9/wgcuxTAwjF9ASzV7AMp/x GiKapFuvJc66tFnsO1nH5BOg+Rc7uVCxa1iMF7WittrcAqu2hnsZPhhC2ngU6xcRTtwiYGdKuclo pg= UI-OutboundReport: notjunk:1;M01:P0:XFu/bFSaat0=;/DRnSmL3FplSTnaTVs+WX/t389H S0ZidDPKvZGyY+t7+9+CP31r+uYNs6S056EeaWdqzmEukeNxdxzcXHiB2FQjHydHj/jIGyPDC MJKxvxjo0D+vPMcAurNDRwIPvAO0W6QBVIenKSziqNTo5L7Nqr8xnBBV/3yemJLc121H540y6 Qr/nzVzTgBH/Z8F+PVH4KwvKqAqSY5GHsW/bxiuXAiHeOW6M9ePwSjgBMmuVWfrPsXI87McMk T6WVioawCNu7RlZ6CvwufZ2nrhWajy5Xap34JdV8EIVZkooB/vOLWwN8IbklorTGPFevr9Tu6 HMf+r4wNvk/wJTVc65uyOeu7e7eGwic/tXQaKLm8D7wZwI6mPVJMOxqYnSXOcKBKZSp36/D8L KTqDzztop5VRDN2hdzQazbRtAv+5rmv2IQeB1RW4Db+FJRh5eEPkMY+KmdfP/P0gMOrfH9Ikr TXCMoYP6r151G6DlAQ/rp1A9vohKJWZ2lDYkjXZaNi1bW41V1YNSMmbXtH8xxWNpQ3/wZHxd/ OWlaKlzwXjMDE17DxmyIn5656elF5ZEz0OIBo6KHjpHE+wYspWG0GThXjMJj2l3kBNMRsT53o 980F16S20jUz2nfreaK9XLxuNFqT6+BRmBjyelQKrTibKsKyMhXqx6nHoXdBFiBRVQiOg4zpM QhE3ITJhb4lzhzRfV5YVZPhQy2jgyXwBIrU4CRgVVauGBCxt9QNYlGg/qVgAkN7K03YWSf7BM itr90whppmsDeYUDTb2SCKl430uMJbBs/moDk/sH/03oc+f4Awf7cDKe05spcS3J18wIA7uOd 50PMWij6/eP1qGKJ7cnaT7YdmYjF/3Pd9FLSrNFx8yrh0= X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --nika-72bf7eaa-5dab-4ec5-8d6d-ec98509fc42d Content-Type: text/plain; charset=UTF-8 Dear all, the attached simple patch fixes a memleak in the frontend when a character literal is passed to a character,value dummy of a bind(c) procedure, by relying on gfc_replace_expr to do the cleanup. (This can be tested e.g. with gfortran.dg/bind_c_usage_13.f03 and running f951 under valgrind). The patch was OK'ed in the PR by Mikael. Pushed as r14-3254-g9ade70bb86c874 after partial regtesting on x86_64-pc-linux-gnu. Thanks, Harald --nika-72bf7eaa-5dab-4ec5-8d6d-ec98509fc42d Content-Type: text/x-patch Content-Disposition: attachment; filename=pr110360-memleak.diff Content-Transfer-Encoding: quoted-printable =46rom 9ade70bb86c8744f4416a48bb69cf4705f00905a Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Wed, 16 Aug 2023 22:00:49 +0200 Subject: [PATCH] Fortran: fix memleak for character,value dummy of bind(c) procedure [PR110360] Testcase gfortran.dg/bind_c_usage_13.f03 exhibited a memleak in the fronte= nd occuring when passing a character literal to a character,value dummy of a bind(c) procedure, due to a missing cleanup in the conversion of the actua= l argument expression. Reduced testcase: program p interface subroutine val_c (c) bind(c) use iso_c_binding, only: c_char character(len=3D1,kind=3Dc_char), value :: c end subroutine val_c end interface call val_c ("A") end gcc/fortran/ChangeLog: PR fortran/110360 * trans-expr.cc (conv_scalar_char_value): Use gfc_replace_expr to avoid leaking replaced gfc_expr. =2D-- gcc/fortran/trans-expr.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc index 52cd88f5b00..6e9e76cd5c9 100644 =2D-- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -4044,8 +4044,9 @@ conv_scalar_char_value (gfc_symbol *sym, gfc_se *se,= gfc_expr **expr) gfc_typespec ts; gfc_clear_ts (&ts); - *expr =3D gfc_get_int_expr (gfc_default_character_kind, NULL, - (*expr)->value.character.string[0]); + gfc_expr *tmp =3D gfc_get_int_expr (gfc_default_character_kind, NUL= L, + (*expr)->value.character.string[0]); + gfc_replace_expr (*expr, tmp); } else if (se !=3D NULL && (*expr)->expr_type =3D=3D EXPR_VARIABLE) { =2D- 2.35.3 --nika-72bf7eaa-5dab-4ec5-8d6d-ec98509fc42d--