aboutsummaryrefslogtreecommitdiff
path: root/src/lj_debug.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lj_debug.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/lj_debug.c b/src/lj_debug.c
index 70f77c74..2f2ea9f0 100644
--- a/src/lj_debug.c
+++ b/src/lj_debug.c
@@ -221,19 +221,22 @@ const char *lj_debug_uvname(GCproto *pt, uint32_t idx)
221} 221}
222 222
223/* Get name and value of upvalue. */ 223/* Get name and value of upvalue. */
224const char *lj_debug_uvnamev(cTValue *o, uint32_t idx, TValue **tvp) 224const char *lj_debug_uvnamev(cTValue *o, uint32_t idx, TValue **tvp, GCobj **op)
225{ 225{
226 if (tvisfunc(o)) { 226 if (tvisfunc(o)) {
227 GCfunc *fn = funcV(o); 227 GCfunc *fn = funcV(o);
228 if (isluafunc(fn)) { 228 if (isluafunc(fn)) {
229 GCproto *pt = funcproto(fn); 229 GCproto *pt = funcproto(fn);
230 if (idx < pt->sizeuv) { 230 if (idx < pt->sizeuv) {
231 *tvp = uvval(&gcref(fn->l.uvptr[idx])->uv); 231 GCobj *uvo = gcref(fn->l.uvptr[idx]);
232 *tvp = uvval(&uvo->uv);
233 *op = uvo;
232 return lj_debug_uvname(pt, idx); 234 return lj_debug_uvname(pt, idx);
233 } 235 }
234 } else { 236 } else {
235 if (idx < fn->c.nupvalues) { 237 if (idx < fn->c.nupvalues) {
236 *tvp = &fn->c.upvalue[idx]; 238 *tvp = &fn->c.upvalue[idx];
239 *op = obj2gco(fn);
237 return ""; 240 return "";
238 } 241 }
239 } 242 }