Napisałem na szybko fixa dla potomnych, ale dalej uważam, że to zachowanie jest bardzo dziwne i nie wiem czym może być spowodowane:
char* string_merge(char* s1, char* s2) {
char* merged = (char *)malloc((T_SIZE * 2 - 1) * sizeof(char));
int j = 0;
for(int i = 0; i < T_SIZE; i++) {
if(s1[i] == '\0' || s2[i] == '\0') {
break;
}
merged[j] = s1[i];
j++;
merged[j] = s2[i];
j++;
}
merged[j] = '\0';
return merged;
}
(to zostało zaakcpetowane)