aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ldebug.c11
-rw-r--r--testes/errors.lua4
2 files changed, 7 insertions, 8 deletions
diff --git a/ldebug.c b/ldebug.c
index f4bb0a08..9110f437 100644
--- a/ldebug.c
+++ b/ldebug.c
@@ -817,16 +817,15 @@ l_noret luaG_ordererror (lua_State *L, const TValue *p1, const TValue *p2) {
817/* add src:line information to 'msg' */ 817/* add src:line information to 'msg' */
818const char *luaG_addinfo (lua_State *L, const char *msg, TString *src, 818const char *luaG_addinfo (lua_State *L, const char *msg, TString *src,
819 int line) { 819 int line) {
820 char buff[LUA_IDSIZE]; 820 if (src == NULL) /* no debug information? */
821 if (src) { 821 return luaO_pushfstring(L, "?:?: %s", msg);
822 else {
823 char buff[LUA_IDSIZE];
822 size_t idlen; 824 size_t idlen;
823 const char *id = getlstr(src, idlen); 825 const char *id = getlstr(src, idlen);
824 luaO_chunkid(buff, id, idlen); 826 luaO_chunkid(buff, id, idlen);
827 return luaO_pushfstring(L, "%s:%d: %s", buff, line, msg);
825 } 828 }
826 else { /* no source available; use "?" instead */
827 buff[0] = '?'; buff[1] = '\0';
828 }
829 return luaO_pushfstring(L, "%s:%d: %s", buff, line, msg);
830} 829}
831 830
832 831
diff --git a/testes/errors.lua b/testes/errors.lua
index 6c76a99a..a0728913 100644
--- a/testes/errors.lua
+++ b/testes/errors.lua
@@ -303,14 +303,14 @@ do
303 local f = function (a) return a + 1 end 303 local f = function (a) return a + 1 end
304 f = assert(load(string.dump(f, true))) 304 f = assert(load(string.dump(f, true)))
305 assert(f(3) == 4) 305 assert(f(3) == 4)
306 checkerr("^%?:%-1:", f, {}) 306 checkerr("^%?:%?:", f, {})
307 307
308 -- code with a move to a local var ('OP_MOV A B' with A<B) 308 -- code with a move to a local var ('OP_MOV A B' with A<B)
309 f = function () local a; a = {}; return a + 2 end 309 f = function () local a; a = {}; return a + 2 end
310 -- no debug info (so that 'a' is unknown) 310 -- no debug info (so that 'a' is unknown)
311 f = assert(load(string.dump(f, true))) 311 f = assert(load(string.dump(f, true)))
312 -- symbolic execution should not get lost 312 -- symbolic execution should not get lost
313 checkerr("^%?:%-1:.*table value", f) 313 checkerr("^%?:%?:.*table value", f)
314end 314end
315 315
316 316