diff options
| author | Roberto I <roberto@inf.puc-rio.br> | 2025-11-08 11:43:42 -0300 |
|---|---|---|
| committer | Roberto I <roberto@inf.puc-rio.br> | 2025-11-08 11:43:42 -0300 |
| commit | e44f3a2ffc7ced5e75cca7657aaa60ef27da89aa (patch) | |
| tree | 090174ab9a66fbec195e9dd539710ab19370ec2f /lvm.c | |
| parent | f791bb69061c15f73395c5a95958ac18af5ef764 (diff) | |
| download | lua-e44f3a2ffc7ced5e75cca7657aaa60ef27da89aa.tar.gz lua-e44f3a2ffc7ced5e75cca7657aaa60ef27da89aa.tar.bz2 lua-e44f3a2ffc7ced5e75cca7657aaa60ef27da89aa.zip | |
Global initialization checks name conflict
Initialization "global a = 10" raises an error if global 'a' is already
defined, that is, it has a non-nil value.
Diffstat (limited to 'lvm.c')
| -rw-r--r-- | lvm.c | 6 |
1 files changed, 6 insertions, 0 deletions
| @@ -1940,6 +1940,12 @@ void luaV_execute (lua_State *L, CallInfo *ci) { | |||
| 1940 | luaT_getvararg(ci, ra, rc); | 1940 | luaT_getvararg(ci, ra, rc); |
| 1941 | vmbreak; | 1941 | vmbreak; |
| 1942 | } | 1942 | } |
| 1943 | vmcase(OP_ERRNNIL) { | ||
| 1944 | TValue *ra = vRA(i); | ||
| 1945 | if (!ttisnil(ra)) | ||
| 1946 | halfProtect(luaG_errnnil(L, cl, GETARG_Bx(i))); | ||
| 1947 | vmbreak; | ||
| 1948 | } | ||
| 1943 | vmcase(OP_VARARGPREP) { | 1949 | vmcase(OP_VARARGPREP) { |
| 1944 | ProtectNT(luaT_adjustvarargs(L, ci, cl->p)); | 1950 | ProtectNT(luaT_adjustvarargs(L, ci, cl->p)); |
| 1945 | if (l_unlikely(trap)) { /* previous "Protect" updated trap */ | 1951 | if (l_unlikely(trap)) { /* previous "Protect" updated trap */ |
