Merge 0.9->0.10
[prosody.git] / util / debug.lua
index 52ba52d07594ce92b1092be751f59f8bd253a7a5..91f691e144b388d933b23126cf412f0ff7d8b2a4 100644 (file)
@@ -24,11 +24,15 @@ do
 end
 module("debugx", package.seeall);
 
-function get_locals_table(level)
-       level = level + 1; -- Skip this function itself
+function get_locals_table(thread, level)
        local locals = {};
        for local_num = 1, math.huge do
-               local name, value = debug.getlocal(level, local_num);
+               local name, value;
+               if thread then
+                       name, value = debug.getlocal(thread, level, local_num);
+               else
+                       name, value = debug.getlocal(level+1, local_num);
+               end
                if not name then break; end
                table.insert(locals, { name = name, value = value });
        end
@@ -97,7 +101,7 @@ function get_traceback_table(thread, start_level)
                levels[(level-start_level)+1] = {
                        level = level;
                        info = info;
-                       locals = not thread and get_locals_table(level+1);
+                       locals = get_locals_table(thread, level+(thread and 0 or 1));
                        upvalues = get_upvalues_table(info.func);
                };
        end