commit 275c150b17ffc621deb5f25ddb851ec942760c04
parent d6d896b9532b3a88458a882690c56b391e1ecbc3
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Thu, 23 Oct 2003 16:06:00 -0200
`error()' (and `error(nil)') generates errors with no error messages
Diffstat:
2 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/lbaselib.c b/lbaselib.c
@@ -1,5 +1,5 @@
/*
-** $Id: lbaselib.c,v 1.134 2003/10/07 20:13:41 roberto Exp roberto $
+** $Id: lbaselib.c,v 1.135 2003/10/10 12:57:55 roberto Exp roberto $
** Basic library
** See Copyright Notice in lua.h
*/
@@ -78,10 +78,8 @@ static int luaB_tonumber (lua_State *L) {
static int luaB_error (lua_State *L) {
int level = luaL_optint(L, 2, 1);
- luaL_checkany(L, 1);
- if (!lua_isstring(L, 1) || level == 0)
- lua_pushvalue(L, 1); /* propagate error message without changes */
- else { /* add extra information */
+ lua_settop(L, 1);
+ if (lua_isstring(L, 1) && level > 0) { /* add extra information? */
luaL_where(L, level);
lua_pushvalue(L, 1);
lua_concat(L, 2);
diff --git a/lua.c b/lua.c
@@ -1,5 +1,5 @@
/*
-** $Id: lua.c,v 1.122 2003/04/03 13:34:42 roberto Exp roberto $
+** $Id: lua.c,v 1.123 2003/05/07 16:02:16 roberto Exp roberto $
** Lua stand-alone interpreter
** See Copyright Notice in lua.h
*/
@@ -117,10 +117,9 @@ static void l_message (const char *pname, const char *msg) {
static int report (int status) {
- const char *msg;
- if (status) {
- msg = lua_tostring(L, -1);
- if (msg == NULL) msg = "(error with no message)";
+ if (status && !lua_isnil(L, -1)) {
+ const char *msg = lua_tostring(L, -1);
+ if (msg == NULL) msg = "(error object is not a string)";
l_message(progname, msg);
lua_pop(L, 1);
}