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 | ||
