I was used 2.30 version and has that code:
interface ISomeIface {
...
};
array<ISomeIface@> ifaces;
void func(ISomeIface& i) {
ifaces.insertLast(i);
}
And that work fine.
Now I upgrade to last svn version, and code become fall with exception. I debug it - in CScriptArray::SetValue value sended as pointer, not as handle, but template subtype has asTYPEID_OBJHANDLE flag and do unreference, that broke all.
It worked, if I change code as:
void func(ISomeIface@ i) {
ifaces.insertLast(i);
}
or
void func(ISomeIface& i) {
ifaces.insertLast(@i);
}
What wrong in my first code? Why behavior is changed? Seems early compiler automatically convert value to handle, based on template type.