[After testing a bit, the original comments have been deemed useless. However:]
It seems as though if some structs are declared as arrays, all must be, try the following:
struct blah{
string name;
}
blah temp[20];
blah temp2[1];
void Caca(){
temp2[0].name = temp[1].name; // no crash!
}
// in autoexec:
temp[1].name = "crap2";
temp2[0].name = "crap";
log("temp2[0].name = " + temp2[0].name);
Caca(); // temp2[0].name = temp[1].name;
log("temp2[0].name = " + temp2[0].name);
// from log:
temp2[0].name = crap
temp2[0].name = crap2
Note that it did not crash, and ran other code after this and exitted normally upon alt+X.
El
PS: Perhaps it simply does not like assigning between struct arrays and non arrayed structs.