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 04fecfaf..1d73da7e 100644
--- a/src/lj_debug.c
+++ b/src/lj_debug.c
@@ -235,19 +235,22 @@ const char *lj_debug_uvname(GCproto *pt, uint32_t idx)
235} 235}
236 236
237/* Get name and value of upvalue. */ 237/* Get name and value of upvalue. */
238const char *lj_debug_uvnamev(cTValue *o, uint32_t idx, TValue **tvp) 238const char *lj_debug_uvnamev(cTValue *o, uint32_t idx, TValue **tvp, GCobj **op)
239{ 239{
240 if (tvisfunc(o)) { 240 if (tvisfunc(o)) {
241 GCfunc *fn = funcV(o); 241 GCfunc *fn = funcV(o);
242 if (isluafunc(fn)) { 242 if (isluafunc(fn)) {
243 GCproto *pt = funcproto(fn); 243 GCproto *pt = funcproto(fn);
244 if (idx < pt->sizeuv) { 244 if (idx < pt->sizeuv) {
245 *tvp = uvval(&gcref(fn->l.uvptr[idx])->uv); 245 GCobj *uvo = gcref(fn->l.uvptr[idx]);
246 *tvp = uvval(&uvo->uv);
247 *op = uvo;
246 return lj_debug_uvname(pt, idx); 248 return lj_debug_uvname(pt, idx);
247 } 249 }
248 } else { 250 } else {
249 if (idx < fn->c.nupvalues) { 251 if (idx < fn->c.nupvalues) {
250 *tvp = &fn->c.upvalue[idx]; 252 *tvp = &fn->c.upvalue[idx];
253 *op = obj2gco(fn);
251 return ""; 254 return "";
252 } 255 }
253 } 256 }