diff options
Diffstat (limited to 'lapi.c')
-rw-r--r-- | lapi.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lapi.c,v 1.226 2002/12/04 17:38:31 roberto Exp roberto $ | 2 | ** $Id: lapi.c,v 1.227 2002/12/19 11:11:55 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 | */ |
@@ -872,14 +872,16 @@ static const char *aux_upvalue (lua_State *L, int funcindex, int n, | |||
872 | StkId fi = luaA_index(L, funcindex); | 872 | StkId fi = luaA_index(L, funcindex); |
873 | if (!ttisfunction(fi)) return NULL; | 873 | if (!ttisfunction(fi)) return NULL; |
874 | f = clvalue(fi); | 874 | f = clvalue(fi); |
875 | if (n > f->l.nupvalues) return NULL; | ||
876 | if (f->c.isC) { | 875 | if (f->c.isC) { |
876 | if (n > f->c.nupvalues) return NULL; | ||
877 | *val = &f->c.upvalue[n-1]; | 877 | *val = &f->c.upvalue[n-1]; |
878 | return ""; | 878 | return ""; |
879 | } | 879 | } |
880 | else { | 880 | else { |
881 | Proto *p = f->l.p; | ||
882 | if (n > p->sizeupvalues) return NULL; | ||
881 | *val = f->l.upvals[n-1]->v; | 883 | *val = f->l.upvals[n-1]->v; |
882 | return getstr(f->l.p->upvalues[n-1]); | 884 | return getstr(p->upvalues[n-1]); |
883 | } | 885 | } |
884 | } | 886 | } |
885 | 887 | ||