commit fc8d077612a235b42d5defd48d6ba923ed85a17f
parent e64fcb9d9454d7640a0a171c9e625139c0c436c0
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Tue, 29 May 2007 15:59:36 -0300
bug: wrong error message in some concatenations
Diffstat:
2 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/bugs b/bugs
@@ -1417,7 +1417,7 @@ lcode.c:
Bug{
what = [[Count hook may be called without being set.]],
-report = [[Mike Pall, on May 2007]],
+report = [[Mike Pall, on 05/2007]],
since = [[?]],
example = [[ ]],
patch = [[
@@ -1449,6 +1449,27 @@ not in 'lua_State'.)
}
Bug{
+what = [[wrong error message in some concatenations]],
+report = [[Alex Davies, on 05/2007]],
+since = [[5.1.2]],
+example = [[a = nil; a = (1)..a]],
+patch = [[
+ldebug.c:
+@@ -563,8 +563,8 @@
+
+
+ void luaG_concaterror (lua_State *L, StkId p1, StkId p2) {
+- if (ttisstring(p1)) p1 = p2;
+- lua_assert(!ttisstring(p1));
++ if (ttisstring(p1) || ttisnumber(p1)) p1 = p2;
++ lua_assert(!ttisstring(p1) && !ttisnumber(p1));
+ luaG_typeerror(L, p1, "concatenate");
+ }
+
+]],
+}
+
+Bug{
what = [[ ]],
report = [[ , on ]],
since = [[i ]],
diff --git a/ldebug.c b/ldebug.c
@@ -1,5 +1,5 @@
/*
-** $Id: ldebug.c,v 2.35 2007/03/26 18:35:34 roberto Exp roberto $
+** $Id: ldebug.c,v 2.36 2007/05/09 15:49:36 roberto Exp roberto $
** Debug Interface
** See Copyright Notice in lua.h
*/
@@ -591,8 +591,8 @@ void luaG_typeerror (lua_State *L, const TValue *o, const char *op) {
void luaG_concaterror (lua_State *L, StkId p1, StkId p2) {
- if (ttisstring(p1)) p1 = p2;
- lua_assert(!ttisstring(p1));
+ if (ttisstring(p1) || ttisnumber(p1)) p1 = p2;
+ lua_assert(!ttisstring(p1) && !ttisnumber(p2));
luaG_typeerror(L, p1, "concatenate");
}