blob: 2f93bb0f841d72593832f90d6f9eedae60bfb10b [file] [log] [blame]
! { dg-do run }
!
! Test the fix for PR78293. The deallocations are present at the
! end of the main programme to aid memory leak searching. The
! allocation in 'tt' leaked memory from an intermediate temporary
! for the array constructor.
!
! Contributed by Andrew Benson <abensonca@gmail.com>
!
module m
implicit none
type t
integer, allocatable, dimension(:) :: r
end type t
contains
function tt(a,b)
implicit none
type(t), allocatable, dimension(:) :: tt
type(t), intent(in), dimension(:) :: a,b
allocate(tt, source = [a,b])
end function tt
function ts(arg)
implicit none
type(t), allocatable, dimension(:) :: ts
integer, intent(in) :: arg(:)
allocate(ts(1))
allocate(ts(1)%r, source = arg)
return
end function ts
end module m
program p
use m
implicit none
type(t), dimension(2) :: c
c=tt(ts([99,199,1999]),ts([42,142]))
if (any (c(1)%r .ne. [99,199,1999])) STOP 1
if (any (c(2)%r .ne. [42,142])) STOP 2
deallocate(c(1)%r)
deallocate(c(2)%r)
end program p