! { dg-do run }
! Checks the fix for PR57959. The first assignment to a was proceeding
! without a deep copy. Since the anum field of 'uKnot' was being pointed
! to twice, the frees in the finally block, following the BLOCK caused
! a double free.
!
! Contributed by Tobias Burnus  <burnus@gcc.gnu.org>
!
program main
  implicit none
  type :: type1
    real, allocatable :: anum
    character(len = :), allocatable :: chr
  end type type1
  real, parameter :: five = 5.0
  real, parameter :: point_one = 0.1

  type :: type2
    type(type1) :: temp
  end type type2
  block
    type(type1) :: uKnot
    type(type2) :: a

    uKnot = type1 (five, "hello")
    call check (uKnot%anum, five)
    call check_chr (uKnot%chr, "hello")

    a = type2 (uKnot) ! Deep copy needed here
    call check (a%temp%anum, five)
    call check_chr (a%temp%chr, "hello")

    a = type2 (type1(point_one, "goodbye")) ! Not here
    call check (a%temp%anum, point_one)
    call check_chr (a%temp%chr, "goodbye")

    a = type2 (foo (five)) ! Not here
    call check (a%temp%anum, five)
    call check_chr (a%temp%chr, "foo set me")
  end block
contains
  subroutine check (arg1, arg2)
    real :: arg1, arg2
    if (arg1 .ne. arg2) STOP 1
  end subroutine

  subroutine check_chr (arg1, arg2)
    character(*) :: arg1, arg2
    if (len (arg1) .ne. len (arg2)) STOP 1
    if (arg1 .ne. arg2) STOP 2
  end subroutine

  type(type1) function foo (arg)
    real :: arg
    foo = type1 (arg, "foo set me")
  end function
end

