diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2025-10-30 10:39:55 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2025-10-30 10:39:55 -0300 |
| commit | 0149b781d438091ce086449101a916e9b4456b4e (patch) | |
| tree | c57e788c302ecf257614c9c19b48336e54522a2d /lcode.c | |
| parent | d4eff00234dc55dac4cb86b6187f5607c1254f9b (diff) | |
| download | lua-0149b781d438091ce086449101a916e9b4456b4e.tar.gz lua-0149b781d438091ce086449101a916e9b4456b4e.tar.bz2 lua-0149b781d438091ce086449101a916e9b4456b4e.zip | |
Case VVARGIND added to luaK_storevar
In a global initialization, the variable does not pass through
'check_readonly', and therefore a VVARGIND is not normalized to a
VINDEXED.
Diffstat (limited to 'lcode.c')
| -rw-r--r-- | lcode.c | 4 |
1 files changed, 4 insertions, 0 deletions
| @@ -1109,6 +1109,10 @@ void luaK_storevar (FuncState *fs, expdesc *var, expdesc *ex) { | |||
| 1109 | codeABRK(fs, OP_SETFIELD, var->u.ind.t, var->u.ind.idx, ex); | 1109 | codeABRK(fs, OP_SETFIELD, var->u.ind.t, var->u.ind.idx, ex); |
| 1110 | break; | 1110 | break; |
| 1111 | } | 1111 | } |
| 1112 | case VVARGIND: { | ||
| 1113 | fs->f->flag |= PF_VATAB; /* function will need a vararg table */ | ||
| 1114 | /* now, assignment is to a regular table */ | ||
| 1115 | } /* FALLTHROUGH */ | ||
| 1112 | case VINDEXED: { | 1116 | case VINDEXED: { |
| 1113 | codeABRK(fs, OP_SETTABLE, var->u.ind.t, var->u.ind.idx, ex); | 1117 | codeABRK(fs, OP_SETTABLE, var->u.ind.t, var->u.ind.idx, ex); |
| 1114 | break; | 1118 | break; |
