diff options
| author | Mike Pall <mike> | 2024-01-31 14:32:04 +0100 |
|---|---|---|
| committer | Mike Pall <mike> | 2024-01-31 14:32:04 +0100 |
| commit | 9cdd5a9479d2265f42dfefc17d068174969bbcff (patch) | |
| tree | b8558abbaff52264fc1d48f52da2e9c718f13a44 /src | |
| parent | 14987af80ab583514f19ef36d1023655324fc757 (diff) | |
| download | luajit-9cdd5a9479d2265f42dfefc17d068174969bbcff.tar.gz luajit-9cdd5a9479d2265f42dfefc17d068174969bbcff.tar.bz2 luajit-9cdd5a9479d2265f42dfefc17d068174969bbcff.zip | |
Preserve keys with dynamic values in template tables when saving bytecode.
Reported by Lyrthras. Fixed by Peter Cawley. #1155
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_bcwrite.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lj_bcwrite.c b/src/lj_bcwrite.c index 6282f767..9820ad12 100644 --- a/src/lj_bcwrite.c +++ b/src/lj_bcwrite.c | |||
| @@ -124,7 +124,7 @@ static void bcwrite_ktab(BCWriteCtx *ctx, const GCtab *t) | |||
| 124 | MSize i, hmask = t->hmask; | 124 | MSize i, hmask = t->hmask; |
| 125 | Node *node = noderef(t->node); | 125 | Node *node = noderef(t->node); |
| 126 | for (i = 0; i <= hmask; i++) | 126 | for (i = 0; i <= hmask; i++) |
| 127 | nhash += !tvisnil(&node[i].val); | 127 | nhash += !tvisnil(&node[i].key); |
| 128 | } | 128 | } |
| 129 | /* Write number of array slots and hash slots. */ | 129 | /* Write number of array slots and hash slots. */ |
| 130 | bcwrite_uleb128(ctx, narray); | 130 | bcwrite_uleb128(ctx, narray); |
| @@ -139,7 +139,7 @@ static void bcwrite_ktab(BCWriteCtx *ctx, const GCtab *t) | |||
| 139 | MSize i = nhash; | 139 | MSize i = nhash; |
| 140 | Node *node = noderef(t->node) + t->hmask; | 140 | Node *node = noderef(t->node) + t->hmask; |
| 141 | for (;; node--) | 141 | for (;; node--) |
| 142 | if (!tvisnil(&node->val)) { | 142 | if (!tvisnil(&node->key)) { |
| 143 | bcwrite_ktabk(ctx, &node->key, 0); | 143 | bcwrite_ktabk(ctx, &node->key, 0); |
| 144 | bcwrite_ktabk(ctx, &node->val, 1); | 144 | bcwrite_ktabk(ctx, &node->val, 1); |
| 145 | if (--i == 0) break; | 145 | if (--i == 0) break; |
