aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2025-01-13 16:16:27 +0100
committerMike Pall <mike>2025-01-13 16:16:27 +0100
commit9d777346bc4e3b033dd78393980d41ee7bc34867 (patch)
treea4e7f3d4162988d0eb17f798a2bc710dc99a23a7
parente8236561d4f71d9fe9faeee4d24197ea3a2de601 (diff)
downloadluajit-9d777346bc4e3b033dd78393980d41ee7bc34867.tar.gz
luajit-9d777346bc4e3b033dd78393980d41ee7bc34867.tar.bz2
luajit-9d777346bc4e3b033dd78393980d41ee7bc34867.zip
Reject negative getfenv()/setfenv() levels to prevent compiler warning.
Thanks to Sergey Kaplun. #1329
-rw-r--r--src/lib_base.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lib_base.c b/src/lib_base.c
index 5190f3fe..7683163c 100644
--- a/src/lib_base.c
+++ b/src/lib_base.c
@@ -141,6 +141,8 @@ LJLIB_CF(getfenv)
141 cTValue *o = L->base; 141 cTValue *o = L->base;
142 if (!(o < L->top && tvisfunc(o))) { 142 if (!(o < L->top && tvisfunc(o))) {
143 int level = lj_lib_optint(L, 1, 1); 143 int level = lj_lib_optint(L, 1, 1);
144 if (level < 0)
145 lj_err_arg(L, 1, LJ_ERR_INVLVL);
144 o = lj_debug_frame(L, level, &level); 146 o = lj_debug_frame(L, level, &level);
145 if (o == NULL) 147 if (o == NULL)
146 lj_err_arg(L, 1, LJ_ERR_INVLVL); 148 lj_err_arg(L, 1, LJ_ERR_INVLVL);
@@ -162,6 +164,8 @@ LJLIB_CF(setfenv)
162 setgcref(L->env, obj2gco(t)); 164 setgcref(L->env, obj2gco(t));
163 return 0; 165 return 0;
164 } 166 }
167 if (level < 0)
168 lj_err_arg(L, 1, LJ_ERR_INVLVL);
165 o = lj_debug_frame(L, level, &level); 169 o = lj_debug_frame(L, level, &level);
166 if (o == NULL) 170 if (o == NULL)
167 lj_err_arg(L, 1, LJ_ERR_INVLVL); 171 lj_err_arg(L, 1, LJ_ERR_INVLVL);