Browse Source

Merge branch 'master' into v2.1

Mike Pall 11 years ago
parent
commit
89f61de517
2 changed files with 4 additions and 2 deletions
  1. 1 1
      src/Makefile.dep
  2. 3 1
      src/lj_debug.c

+ 1 - 1
src/Makefile.dep

@@ -97,7 +97,7 @@ lj_ctype.o: lj_ctype.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
  lj_ccallback.h
  lj_ccallback.h
 lj_debug.o: lj_debug.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
 lj_debug.o: lj_debug.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
  lj_err.h lj_errmsg.h lj_debug.h lj_buf.h lj_gc.h lj_str.h lj_tab.h \
  lj_err.h lj_errmsg.h lj_debug.h lj_buf.h lj_gc.h lj_str.h lj_tab.h \
- lj_state.h lj_frame.h lj_bc.h lj_strfmt.h lj_jit.h lj_ir.h
+ lj_state.h lj_frame.h lj_bc.h lj_strfmt.h lj_vm.h lj_jit.h lj_ir.h
 lj_dispatch.o: lj_dispatch.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
 lj_dispatch.o: lj_dispatch.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
  lj_err.h lj_errmsg.h lj_buf.h lj_gc.h lj_str.h lj_func.h lj_tab.h \
  lj_err.h lj_errmsg.h lj_buf.h lj_gc.h lj_str.h lj_func.h lj_tab.h \
  lj_meta.h lj_debug.h lj_state.h lj_frame.h lj_bc.h lj_ff.h lj_ffdef.h \
  lj_meta.h lj_debug.h lj_state.h lj_frame.h lj_bc.h lj_ff.h lj_ffdef.h \

+ 3 - 1
src/lj_debug.c

@@ -15,6 +15,7 @@
 #include "lj_frame.h"
 #include "lj_frame.h"
 #include "lj_bc.h"
 #include "lj_bc.h"
 #include "lj_strfmt.h"
 #include "lj_strfmt.h"
+#include "lj_vm.h"
 #if LJ_HASJIT
 #if LJ_HASJIT
 #include "lj_jit.h"
 #include "lj_jit.h"
 #endif
 #endif
@@ -87,7 +88,8 @@ static BCPos debug_framepc(lua_State *L, GCfunc *fn, cTValue *nextframe)
 	if (frame_islua(f)) {
 	if (frame_islua(f)) {
 	  f = frame_prevl(f);
 	  f = frame_prevl(f);
 	} else {
 	} else {
-	  if (frame_isc(f))
+	  if (frame_isc(f) || (LJ_HASFFI && frame_iscont(f) &&
+			       (f-1)->u32.lo == LJ_CONT_FFI_CALLBACK))
 	    cf = cframe_raw(cframe_prev(cf));
 	    cf = cframe_raw(cframe_prev(cf));
 	  f = frame_prevd(f);
 	  f = frame_prevd(f);
 	}
 	}