1! { dg-do run }
2!
3! Check the fix for PR34955 in which three bytes would be copied
4! from bytes by TRANSFER, instead of the required two and the
5! resulting string length would be incorrect.
6!
7! Contributed by Dominique Dhumieres  <dominiq@lps.ens.fr>
8!
9  character(len = 1)  :: string = "z"
10  character(len = 20) :: tmp = ""
11  tmp = Upper ("abcdefgh")
12  if (trim(tmp) .ne. "ab") call abort ()
13contains
14  Character (len = 20) Function Upper (string)
15    Character(len = *) string
16    integer :: ij
17    i = size (transfer (string,"xy",len (string)))
18    if (i /= len (string)) call abort ()
19    Upper = ""
20    Upper(1:2) = &
21    transfer (merge (transfer (string,"xy",len (string)),    &
22      string(1:2), .true.), "xy")
23    return
24  end function Upper
25end
26