new function luaL_errstr

This commit is contained in:
Roberto Ierusalimschy 2002-02-05 20:36:52 -02:00
parent 0a87d9d334
commit d070506a25
3 changed files with 19 additions and 5 deletions

View File

@ -21,6 +21,18 @@
#include "lualib.h"
LUALIB_API const char *luaL_errstr (int errcode) {
static const char *const errstr[] = {
"ok",
"run-time error",
"cannot open file",
"syntax error",
"memory allocation error",
"error in error handling"
};
return errstr[errcode];
}
LUALIB_API int luaL_findstring (const char *name, const char *const list[]) {
int i;

View File

@ -20,6 +20,7 @@
#endif
typedef struct luaL_reg {
const char *name;
lua_CFunction func;
@ -48,6 +49,9 @@ LUALIB_API int luaL_findstring (const char *name,
LUALIB_API int luaL_ref (lua_State *L, int t);
LUALIB_API void luaL_unref (lua_State *L, int t, int ref);
/* error messages corresponding to error codes */
LUALIB_API const char *luaL_errstr (int errcode);
/*
** ===============================================================

View File

@ -213,9 +213,6 @@ static int luaB_next (lua_State *L) {
static int passresults (lua_State *L, int status, int oldtop) {
static const char *const errornames[] =
{"ok", "run-time error", "file error", "syntax error",
"memory error", "error in error handling"};
if (status == 0) {
int nresults = lua_gettop(L) - oldtop;
if (nresults > 0)
@ -227,7 +224,7 @@ static int passresults (lua_State *L, int status, int oldtop) {
}
else { /* error */
lua_pushnil(L);
lua_pushstring(L, errornames[status]); /* error code */
lua_pushstring(L, luaL_errstr(status)); /* error code */
return 2;
}
}
@ -415,7 +412,8 @@ static int luaB_tostring (lua_State *L) {
static int luaB_resume (lua_State *L) {
lua_State *co = (lua_State *)lua_touserdata(L, lua_upvalueindex(1));
lua_resume(L, co);
if (lua_resume(L, co) != 0)
lua_error(L, "error running co-routine");
return lua_gettop(L);
}