Tracebacks recognize metamethods '__close'
diff --git a/ldebug.c b/ldebug.c
index acaa653..9593039 100644
--- a/ldebug.c
+++ b/ldebug.c
@@ -651,6 +651,9 @@
     case OP_SHRI: case OP_SHLI:
       *name = "shift";
       return "metamethod";
+    case OP_CLOSE: case OP_RETURN:
+      *name = "close";
+      return "metamethod";
     default:
       return NULL;  /* cannot find a reasonable name */
   }
diff --git a/testes/locals.lua b/testes/locals.lua
index 6eb1ba0..99fa79c 100644
--- a/testes/locals.lua
+++ b/testes/locals.lua
@@ -316,14 +316,27 @@
   assert(log[1] == 5 and log[2] == 4 and log[3] == 4 and log[4] == 4
          and #log == 4)
 
-  -- error in toclose in vararg function
-  function foo (...)
-    local x123 <close> = 10
+  -- error leaving a block
+  local function foo (...)
+    do
+      local x1 <close> = func2close(function () error("Y") end)
+      local x123 <close> = func2close(function () error("X") end)
+    end
   end
 
-  local st, msg = pcall(foo)
-  assert(string.find(msg, "'x123'"))
+  local st, msg = xpcall(foo, debug.traceback)
+  assert(string.match(msg, "^[^ ]* X"))
+  assert(string.find(msg, "in metamethod 'close'"))
 
+  -- error in toclose in vararg function
+  local function foo (...)
+    local x123 <close> = func2close(function () error("X") end)
+  end
+
+  local st, msg = xpcall(foo, debug.traceback)
+  assert(string.match(msg, "^[^ ]* X"))
+
+  assert(string.find(msg, "in metamethod 'close'"))
 end