LUA_API void *lua_newuserdata (lua_State *L, size_t size) { TString *ts = luaS_newudata(L, size, NULL); tsvalue(L->top) = ts; ttype(L->top) = LUA_TUSERDATA; api_incr_top(L); return ts->u.d.value; }
LUA_API void *lua_newuserdata (lua_State *L, size_t size) { /* TString *ts = luaS_newudata(L, size, NULL); */ TString *ts = luaS_newudata(L, (size==0) ? 1 : size, NULL); /* change in version 4.0.1 reported by VP */ tsvalue(L->top) = ts; ttype(L->top) = LUA_TUSERDATA; api_incr_top(L); return ts->u.d.value; }
LUA_API void lua_newuserdatabox (lua_State *L, void *ptr) { Udata *u; lua_lock(L); u = luaS_newudata(L, 4); u->uv.len = 4; // user data box bit is set. *(void**)(u + 1) = ptr; setuvalue(L->top, u); api_incr_top(L); lua_unlock(L); }