|
Sivan Thiruvengadam wrote:
Ignacio, * *Yes, you are absolutely right.CLNumList:: CLNumList(lua_State *L) { if (lua_isuserdata(L,1)) { CLNL*t = static_cast< CLNL*>(lua_touserdata(L, 1)); real_object = new CNumList(*t->pT->real_object); } else real_object = new CNumList(); }
I think that is the problem. See, the constructor of CLNumList is assuming that at stackpos 1 there is a CLNumList. In the case of your call to GetListofNumbers, at that position there is an instance of CLObject. I fail to see how that ends up messing the Lua side of things, but I think it is definitely wrong.
Could you just use push(L, new CLNumList) in GetListofNumbers ? Something like: CLObject :GetListofNumbers(lua_State *L)// { CLNumList*o = new CLNumList(); // initialize it properly with the corresponding CNumList pointer CLNumList::push(L, o); return 1; }