diff options
author | Mike Pall <mike> | 2025-01-13 16:16:27 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2025-01-13 16:16:27 +0100 |
commit | 9d777346bc4e3b033dd78393980d41ee7bc34867 (patch) | |
tree | a4e7f3d4162988d0eb17f798a2bc710dc99a23a7 | |
parent | e8236561d4f71d9fe9faeee4d24197ea3a2de601 (diff) | |
download | luajit-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.c | 4 |
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); |