diff options
| author | valid-ptr <konstantin.matveyev@eligovision.ru> | 2021-02-15 16:24:54 +0300 |
|---|---|---|
| committer | konstantin.matveyev <konstantin.matveyev@eligovision.ru> | 2021-02-15 16:30:27 +0300 |
| commit | 1d255d1d5f55584626ae247610f379ccdb8f2ec5 (patch) | |
| tree | 99418cf0c07e06def1b53853e7701f88e241e43b /src | |
| parent | 203790a68020186bf668b2787968aa0d901fc518 (diff) | |
| download | lanes-1d255d1d5f55584626ae247610f379ccdb8f2ec5.tar.gz lanes-1d255d1d5f55584626ae247610f379ccdb8f2ec5.tar.bz2 lanes-1d255d1d5f55584626ae247610f379ccdb8f2ec5.zip | |
Bug fix for Lua 5.1/LuaJIT: lua_getiuservalue must check if lua_getfenv returns global environment
Diffstat (limited to 'src')
| -rw-r--r-- | src/compat.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/compat.c b/src/compat.c index 9f36090..bccd05f 100644 --- a/src/compat.c +++ b/src/compat.c | |||
| @@ -59,6 +59,20 @@ int lua_getiuservalue( lua_State* L, int idx, int n) | |||
| 59 | return LUA_TNONE; | 59 | return LUA_TNONE; |
| 60 | } | 60 | } |
| 61 | lua_getuservalue( L, idx); | 61 | lua_getuservalue( L, idx); |
| 62 | |||
| 63 | #if LUA_VERSION_NUM == 501 | ||
| 64 | /* default environment is not a nil (see lua_getfenv) */ | ||
| 65 | lua_getglobal(L, "package"); | ||
| 66 | if (lua_rawequal(L, -2, -1) || lua_rawequal(L, -2, LUA_GLOBALSINDEX)) | ||
| 67 | { | ||
| 68 | lua_pop(L, 2); | ||
| 69 | lua_pushnil( L); | ||
| 70 | |||
| 71 | return LUA_TNONE; | ||
| 72 | } | ||
| 73 | lua_pop(L, 1); /* remove package */ | ||
| 74 | #endif | ||
| 75 | |||
| 62 | return lua_type( L, -1); | 76 | return lua_type( L, -1); |
| 63 | } | 77 | } |
| 64 | 78 | ||
