freesstring(dummy.name);
lua_freedebugsocket();
+ nscheckfreeall(POOL_LUA);
}
void lua_loadscripts(void) {
}
}
+/* taken from the lua manual, modified to use nsmalloc */
+static void *lua_nsmalloc(void *ud, void *ptr, size_t osize, size_t nsize) {
+ if(nsize == 0) {
+ if(ptr != NULL)
+ luafree(ptr);
+ return NULL;
+ }
+
+ return luarealloc(ptr, nsize);
+}
+
lua_State *lua_loadscript(char *file) {
char fullpath[LUA_PATHLEN];
int top;
if(lua_scriptloaded(file))
return NULL;
- l = lua_open();
+ l = lua_newstate(lua_nsmalloc, NULL);
if(!l)
return NULL;
- n = (lua_list *)malloc(sizeof(lua_list));;
+ n = (lua_list *)luamalloc(sizeof(lua_list));;
if(!n) {
Error("lua", ERR_ERROR, "Error allocing list for %s.", file);
return NULL;
n->name = getsstring(file, LUA_PATHLEN);
if(!n->name) {
Error("lua", ERR_ERROR, "Error allocing name item for %s.", file);
- free(n);
+ luafree(n);
return NULL;
}
n->calls = 0;
Error("lua", ERR_ERROR, "Error loading %s.", file);
lua_close(l);
freesstring(n->name);
- free(n);
+ luafree(n);
return NULL;
}
Error("lua", ERR_ERROR, "Error pcalling: %s.", file);
lua_close(l);
freesstring(n->name);
- free(n);
+ luafree(n);
return NULL;
}
}
}
- free(l);
+ luafree(l);
}
void lua_setpath(lua_State *l) {