Repair buggy error-handling in makeclass/getclass

This commit is contained in:
2021-12-27 16:44:12 -05:00
parent 82381ada2e
commit 9517b3e004
5 changed files with 170 additions and 76 deletions

View File

@@ -19,10 +19,27 @@ LuaDefine(makeclass, "classname", "create a class if it doesn't already exist")
LuaArg classname;
LuaRet classtab;
LuaStack LS(L, classname, classtab);
if (!LS.isstring(classname)) {
luaL_error(L, "class name must be a string");
}
if (!LS.validclassname(classname)) {
luaL_error(L, "invalid class name: %s", LS.ckstring(classname).c_str());
};
LS.makeclass(classtab, classname);
return LS.result();
}
LuaDefine(getclass, "classname", "get the classtab with the specified name") {
LuaArg classname;
LuaRet classtab;
LuaStack LS(L, classname, classtab);
std::string err = LS.getclass(classtab, classname);
if (err != "") {
luaL_error(L, "%s", err.c_str());
}
return LS.result();
}
LuaDefine(classname, "classtable", "get the class name from a class table") {
LuaArg table;
LuaRet result;
@@ -41,6 +58,12 @@ LuaDefine(maketangible, "classname", "create a class if it doesn't already exist
LuaRet classtab;
LuaVar subtab;
LuaStack LS(L, classname, classtab, subtab);
if (!LS.isstring(classname)) {
luaL_error(L, "class name must be a string");
}
if (!LS.validclassname(classname)) {
luaL_error(L, "invalid class name: %s", LS.ckstring(classname).c_str());
};
LS.makeclass(classtab, classname);
LS.makesubtable(subtab, classtab, "action");
return LS.result();