! { dg-do run } ! Check that substrings behave correctly even when zero-sized implicit none character(len=10) :: s, t integer :: i, j s = "abcdefghij" t(:10) = s(1:) s(6:5) = "foo" if (s /= t) call abort i = 2 j = -1 s(i:i+j) = "foo" if (s /= t) call abort i = 20 s(i+1:i) = "foo" if (s /= t) call abort s(6:5) = s(7:5) if (s /= t) call abort s = t(7:6) if (len(trim(s)) /= 0) call abort if (len(t(8:4)) /= 0) call abort if (len(trim(t(8:4))) /= 0) call abort end