From 9cdd5a9479d2265f42dfefc17d068174969bbcff Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Wed, 31 Jan 2024 14:32:04 +0100 Subject: [PATCH] Preserve keys with dynamic values in template tables when saving bytecode. Reported by Lyrthras. Fixed by Peter Cawley. #1155 --- src/lj_bcwrite.c | 4 ++-- 1 file 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) MSize i, hmask = t->hmask; Node *node = noderef(t->node); for (i = 0; i <= hmask; i++) - nhash += !tvisnil(&node[i].val); + nhash += !tvisnil(&node[i].key); } /* Write number of array slots and hash slots. */ bcwrite_uleb128(ctx, narray); @@ -139,7 +139,7 @@ static void bcwrite_ktab(BCWriteCtx *ctx, const GCtab *t) MSize i = nhash; Node *node = noderef(t->node) + t->hmask; for (;; node--) - if (!tvisnil(&node->val)) { + if (!tvisnil(&node->key)) { bcwrite_ktabk(ctx, &node->key, 0); bcwrite_ktabk(ctx, &node->val, 1); if (--i == 0) break;