aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2010-11-27 20:23:39 +0100
committerMike Pall <mike>2010-11-27 20:23:39 +0100
commit24186e05e66550951002ccca6f7fb4782c5c0319 (patch)
tree24b31ced03a97213aaf1179afe37d65bbe6091fe /src
parent35890f66c17562759d397e65ab3f15bcec7819ad (diff)
downloadluajit-24186e05e66550951002ccca6f7fb4782c5c0319.tar.gz
luajit-24186e05e66550951002ccca6f7fb4782c5c0319.tar.bz2
luajit-24186e05e66550951002ccca6f7fb4782c5c0319.zip
Remove metamethod frame for errors from internal metamethods.
Diffstat (limited to 'src')
-rw-r--r--src/lj_err.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lj_err.c b/src/lj_err.c
index 65029092..0d5aa683 100644
--- a/src/lj_err.c
+++ b/src/lj_err.c
@@ -903,9 +903,12 @@ LJ_NOINLINE void lj_err_optype_call(lua_State *L, TValue *o)
903/* Error in context of caller. */ 903/* Error in context of caller. */
904LJ_NOINLINE void lj_err_callermsg(lua_State *L, const char *msg) 904LJ_NOINLINE void lj_err_callermsg(lua_State *L, const char *msg)
905{ 905{
906 cTValue *frame = L->base-1; 906 TValue *frame = L->base-1;
907 cTValue *pframe = frame_islua(frame) ? frame_prevl(frame) : 907 TValue *pframe = NULL;
908 frame_iscont(frame) ? frame_prevd(frame) : NULL; 908 if (frame_islua(frame))
909 pframe = frame_prevl(frame);
910 else if (frame_iscont(frame))
911 L->base = (pframe = frame_prevd(frame))+1; /* Remove metamethod frame. */
909 err_loc(L, msg, pframe, frame); 912 err_loc(L, msg, pframe, frame);
910 lj_err_run(L); 913 lj_err_run(L);
911} 914}