diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2007-11-28 16:27:38 -0200 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2007-11-28 16:27:38 -0200 |
commit | abcc124df05fe19470abdb9d665160a7e3b01495 (patch) | |
tree | a1ee289114ba8105800d24c1b08a3725b8778690 /lapi.c | |
parent | b4164a9aa7760be7d66f90d6af5093b9ff26fb0c (diff) | |
download | lua-abcc124df05fe19470abdb9d665160a7e3b01495.tar.gz lua-abcc124df05fe19470abdb9d665160a7e3b01495.tar.bz2 lua-abcc124df05fe19470abdb9d665160a7e3b01495.zip |
BUG: lua_setfenv may crash if called over an invalid object
Diffstat (limited to 'lapi.c')
-rw-r--r-- | lapi.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lapi.c,v 2.60 2007/04/17 13:19:53 roberto Exp roberto $ | 2 | ** $Id: lapi.c,v 2.61 2007/08/07 16:53:40 roberto Exp roberto $ |
3 | ** Lua API | 3 | ** Lua API |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -733,7 +733,7 @@ LUA_API int lua_setfenv (lua_State *L, int idx) { | |||
733 | res = 0; | 733 | res = 0; |
734 | break; | 734 | break; |
735 | } | 735 | } |
736 | luaC_objbarrier(L, gcvalue(o), hvalue(L->top - 1)); | 736 | if (res) luaC_objbarrier(L, gcvalue(o), hvalue(L->top - 1)); |
737 | L->top--; | 737 | L->top--; |
738 | lua_unlock(L); | 738 | lua_unlock(L); |
739 | return res; | 739 | return res; |