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:
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);
}