_callsstack = &_callstackdata[0];\r
_stackbase = 0;\r
_top = 0;\r
- if(!friendvm) \r
+ if(!friendvm) {\r
_roottable = SQTable::Create(_ss(this), 0);\r
+ sq_base_register(this);\r
+ }\r
else {\r
_roottable = friendvm->_roottable;\r
_errorhandler = friendvm->_errorhandler;\r
_debughook_native = friendvm->_debughook_native;\r
_debughook_closure = friendvm->_debughook_closure;\r
}\r
- \r
- sq_base_register(this);\r
return true;\r
}\r
\r
int nparams = 2;\r
SQObjectPtr ret;\r
Push(target); Push(attrs);\r
- Call(_class(target)->_metamethods[MT_INHERITED],nparams,_top - nparams, ret, false);\r
+ if(!Call(_class(target)->_metamethods[MT_INHERITED],nparams,_top - nparams, ret, false)) {\r
+ Pop(nparams);\r
+ return false;\r
+ }\r
Pop(nparams);\r
}\r
_class(target)->_attributes = attrs;\r
if(_table(self)->Get(key,dest))return true;\r
break;\r
case OT_ARRAY:\r
- if(sq_isnumeric(key)) { if(_array(self)->Get(tointeger(key),dest)) { return true; } Raise_IdxError(key); return false; }\r
+ if(sq_isnumeric(key)) { if(_array(self)->Get(tointeger(key),dest)) { return true; } if(selfidx != EXISTS_FALL_BACK) Raise_IdxError(key); return false; }\r
break;\r
case OT_INSTANCE:\r
if(_instance(self)->Get(key,dest)) return true;\r
dest = SQInteger(_stringval(self)[n]);\r
return true;\r
}\r
- Raise_IdxError(key);\r
+ if(selfidx != EXISTS_FALL_BACK) Raise_IdxError(key);\r
return false;\r
}\r
break;\r
if(_table(_roottable)->Get(key,dest)) return true;\r
}\r
//#endif\r
- Raise_IdxError(key);\r
+ if(selfidx != EXISTS_FALL_BACK) Raise_IdxError(key);\r
return false;\r
}\r
\r