! { dg-do run } ! ! Test the fix for PR88393 in which a segfault occurred as indicated. ! ! Contributed by Janus Weil ! module m implicit none type :: t character(len=:), allocatable :: cs contains procedure :: ass generic :: assignment(=) => ass end type contains subroutine ass(a, b) class(t), intent(inout) :: a class(t), intent(in) :: b a%cs = b%cs print *, "ass" end subroutine end module program p use m implicit none type :: t2 type(t) :: c end type type(t2), dimension(1:2) :: arr arr(1)%c%cs = "abcd" arr(2)%c = arr(1)%c ! Segfault here. print *, "done", arr(2)%c%cs, arr(2)%c%cs ! Make sure with valgrind that there are no memory leaks. deallocate (arr(1)%c%cs) deallocate (arr(2)%c%cs) end