https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121203

--- Comment #2 from anlauf at gcc dot gnu.org ---
Note: the code works properly when eval is a contained subroutine, as in:

program p
  character(10), external :: f
  call eval(f,"abc")
  call eval(f,"abc")  ! double free or corruption
contains
  subroutine eval(func,c_arg)
    character(*) c_arg
    character(*) func
    external func
    print *, len (c_arg)
    print *,func(c_arg)
  end subroutine
end
character(10) function f(arg)
  character(*) arg
  f=arg
end


In that case, the dump has:

  eval (f, &"abc"[1]{lb: 1 sz: 1}, 10, 3);
  eval (f, &"abc"[1]{lb: 1 sz: 1}, 10, 3);

Reply via email to