瀏覽代碼

bug: wrong error message in some concatenations

Roberto Ierusalimschy 18 年之前
父節點
當前提交
fc8d077612
共有 2 個文件被更改,包括 25 次插入4 次删除
  1. 22 1
      bugs
  2. 3 3
      ldebug.c

+ 22 - 1
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 = [[
@@ -1448,6 +1448,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 ]],

+ 3 - 3
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");
 }