aboutsummaryrefslogtreecommitdiff
path: root/lstring.c
diff options
context:
space:
mode:
Diffstat (limited to 'lstring.c')
-rw-r--r--lstring.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/lstring.c b/lstring.c
index fbc3e02d..29a08212 100644
--- a/lstring.c
+++ b/lstring.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lstring.c,v 2.63 2018/01/28 15:13:26 roberto Exp roberto $ 2** $Id: lstring.c,v 2.64 2018/02/15 18:06:24 roberto Exp roberto $
3** String table (keeps all strings handled by Lua) 3** String table (keeps all strings handled by Lua)
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -265,16 +265,19 @@ TString *luaS_new (lua_State *L, const char *str) {
265} 265}
266 266
267 267
268Udata *luaS_newudata (lua_State *L, size_t s) { 268Udata *luaS_newudata (lua_State *L, size_t s, int nuvalue) {
269 Udata *u; 269 Udata *u;
270 int i;
270 GCObject *o; 271 GCObject *o;
271 if (s > MAX_SIZE - sizeof(Udata)) 272 if (s > MAX_SIZE - udatamemoffset(nuvalue))
272 luaM_toobig(L); 273 luaM_toobig(L);
273 o = luaC_newobj(L, LUA_TUSERDATA, sizeludata(s)); 274 o = luaC_newobj(L, LUA_TUSERDATA, sizeudata(nuvalue, s));
274 u = gco2u(o); 275 u = gco2u(o);
275 u->len = s; 276 u->len = s;
277 u->nuvalue = nuvalue;
276 u->metatable = NULL; 278 u->metatable = NULL;
277 setuservalue(L, u, luaO_nilobject); 279 for (i = 0; i < nuvalue; i++)
280 setnilvalue(&u->uv[i].uv);
278 return u; 281 return u;
279} 282}
280 283