Re: [PATCH] Fix Bug 79524 - [Regression] valgrind error for gcc/testsuite/gfortran.dg/fimplicit_none_2.f90

Jerry D <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
commit r16-8479-g7660e3067481159acc3ad76cfae22f71606670c7
Author: Christopher Albert <[email protected]>
Date:   Fri Apr 3 12:45:57 2026 +0200

     fortran: Clean up charlens after rejected parameter arrays [PR79524]

I will backport after some time.

Jerry

On 4/4/26 10:32 AM, Jerry D wrote:
> Hi all,
> 
> As stated in the PR, I was able to verify the valgrind error and after applying 
> the patch, confirmed the errors go away.
> 
> Regression tested on X86_64.
> 
> I plan to commit this in the next day or so unless additional comments.
> 
> Regards,
> 
> Jerry
> 
> ---
> 
> fortran: Clean up charlens after rejected parameter arrays
>   [PR79524]
> 
> When a parameter array declaration such as
> character(*), parameter :: z(2) = [character(n) :: 'x', 'y']
> is rejected, declaration-local charlen nodes from that statement can remain on
> cl_list and later be resolved again.  The charlen's length expression still
> references the symbol 'n' whose symtree was already freed by gfc_undo_symbols,
> causing a heap-use-after-free in resolve_charlen.
> 
> Clean up those statement-local charlens at the rejection point in decl.cc,
> after clearing the surviving owners in that path.
> 
>      PR fortran/79524
> 
> gcc/fortran/ChangeLog:
> 
>      PR fortran/79524
>      * decl.cc (discard_pending_charlens): New helper.
>      (add_init_expr_to_sym): Drop statement-local charlens when
>      rejecting variable-length parameter arrays.
>      (variable_decl, do_parm, enumerator_decl): Save the current
>      namespace charlen list before parsing declarations with
>      initializers.
>      (match_procedure_decl): Adjust call to add_init_expr_to_sym.
> 
> gcc/testsuite/ChangeLog:
> 
>      PR fortran/79524
>      * gfortran.dg/pr79524.f90: New test.
> 
> Signed-off-by: Christopher Albert <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.