lua

A copy of the Lua development repository
Log | Files | Refs | README

commit d070506a255cc7cc33842a7bb97e1405cfb048aa
parent 0a87d9d3346bcf74d84e4d6bae775bceecef096f
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date:   Tue,  5 Feb 2002 20:36:30 -0200

new function luaL_errstr

Diffstat:
Mlauxlib.c | 12++++++++++++
Mlauxlib.h | 4++++
Mlbaselib.c | 8+++-----
3 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/lauxlib.c b/lauxlib.c @@ -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; diff --git a/lauxlib.h b/lauxlib.h @@ -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); + /* ** =============================================================== diff --git a/lbaselib.c b/lbaselib.c @@ -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); }