diff options
| author | Mike Pall <mike> | 2021-07-19 17:03:16 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2021-07-19 17:03:16 +0200 |
| commit | 6ca580155b035fd369f193cdee59391b594a5028 (patch) | |
| tree | 37e72019d7cb5d63abc73c9e1e3c7021267f0569 /src | |
| parent | 44bd7437a27e0d19bcf878c20ad27a673f17f40b (diff) | |
| download | luajit-6ca580155b035fd369f193cdee59391b594a5028.tar.gz luajit-6ca580155b035fd369f193cdee59391b594a5028.tar.bz2 luajit-6ca580155b035fd369f193cdee59391b594a5028.zip | |
Avoid out-of-range number of results when compiling select(k, ...).
The interpreter will throw and abort the trace, anyway.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_ffrecord.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lj_ffrecord.c b/src/lj_ffrecord.c index ff6ecc51..9405e694 100644 --- a/src/lj_ffrecord.c +++ b/src/lj_ffrecord.c | |||
| @@ -256,9 +256,9 @@ static void LJ_FASTCALL recff_select(jit_State *J, RecordFFData *rd) | |||
| 256 | ptrdiff_t n = (ptrdiff_t)J->maxslot; | 256 | ptrdiff_t n = (ptrdiff_t)J->maxslot; |
| 257 | if (start < 0) start += n; | 257 | if (start < 0) start += n; |
| 258 | else if (start > n) start = n; | 258 | else if (start > n) start = n; |
| 259 | rd->nres = n - start; | ||
| 260 | if (start >= 1) { | 259 | if (start >= 1) { |
| 261 | ptrdiff_t i; | 260 | ptrdiff_t i; |
| 261 | rd->nres = n - start; | ||
| 262 | for (i = 0; i < n - start; i++) | 262 | for (i = 0; i < n - start; i++) |
| 263 | J->base[i] = J->base[start+i]; | 263 | J->base[i] = J->base[start+i]; |
| 264 | } /* else: Interpreter will throw. */ | 264 | } /* else: Interpreter will throw. */ |
