Software / code / prosody
Comparison
util/debug.lua @ 4693:7ef4faa056fb
util.debug: Some more magic constant fiddling. Don't ask me.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 25 Apr 2012 23:16:37 +0100 |
| parent | 4684:dc70c4ffb66d |
| child | 4699:c66179261551 |
comparison
equal
deleted
inserted
replaced
| 4692:8e7c683d78ca | 4693:7ef4faa056fb |
|---|---|
| 86 function get_traceback_table(thread, start_level) | 86 function get_traceback_table(thread, start_level) |
| 87 local levels = {}; | 87 local levels = {}; |
| 88 for level = start_level, math.huge do | 88 for level = start_level, math.huge do |
| 89 local info; | 89 local info; |
| 90 if thread then | 90 if thread then |
| 91 info = debug.getinfo(thread, level); | 91 info = debug.getinfo(thread, level+1); |
| 92 else | 92 else |
| 93 info = debug.getinfo(level); | 93 info = debug.getinfo(level+1); |
| 94 end | 94 end |
| 95 if not info then break; end | 95 if not info then break; end |
| 96 | 96 |
| 97 levels[(level-start_level)+1] = { | 97 levels[(level-start_level)+1] = { |
| 98 level = level; | 98 level = level; |
| 126 return nil, "invalid message"; | 126 return nil, "invalid message"; |
| 127 elseif not level then | 127 elseif not level then |
| 128 if type(message) == "number" then | 128 if type(message) == "number" then |
| 129 level, message = message, nil; | 129 level, message = message, nil; |
| 130 else | 130 else |
| 131 level = 2; | 131 level = 1; |
| 132 end | 132 end |
| 133 end | 133 end |
| 134 | 134 |
| 135 message = message and (message.."\n") or ""; | 135 message = message and (message.."\n") or ""; |
| 136 | 136 |
| 137 local levels = get_traceback_table(thread, level+2); | 137 local levels = get_traceback_table(thread, level+3); |
| 138 | 138 |
| 139 local last_source_desc; | 139 local last_source_desc; |
| 140 | 140 |
| 141 local lines = {}; | 141 local lines = {}; |
| 142 for nlevel, level in ipairs(levels) do | 142 for nlevel, level in ipairs(levels) do |