Probably I\'m just too dump for googling, but I always thought char arrays get only null terminated by an literal initialization (char x[]=\"asdf\";) and got a
char x[]=\"asdf\";
If t is an array of size 2, then the last case is t[2 - 1] = t[1] and not 2. t[2] is out of bounds.
t
2
t[2 - 1] = t[1]
t[2]