diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_record.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index dc1bf835..082f12e0 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -1159,7 +1159,8 @@ static void rec_idx_bump(jit_State *J, RecordIndex *ix) | |||
1159 | } else if (ir->o == IR_TDUP) { | 1159 | } else if (ir->o == IR_TDUP) { |
1160 | GCtab *tpl = gco2tab(proto_kgc(&gcref(rbc->pt)->pt, ~(ptrdiff_t)bc_d(*pc))); | 1160 | GCtab *tpl = gco2tab(proto_kgc(&gcref(rbc->pt)->pt, ~(ptrdiff_t)bc_d(*pc))); |
1161 | /* Grow template table, but preserve keys with nil values. */ | 1161 | /* Grow template table, but preserve keys with nil values. */ |
1162 | if (tb->asize > tpl->asize || (1u << nhbits)-1 > tpl->hmask) { | 1162 | if ((tb->asize > tpl->asize && (1u << nhbits)-1 == tpl->hmask) || |
1163 | (tb->asize == tpl->asize && (1u << nhbits)-1 > tpl->hmask)) { | ||
1163 | Node *node = noderef(tpl->node); | 1164 | Node *node = noderef(tpl->node); |
1164 | uint32_t i, hmask = tpl->hmask; | 1165 | uint32_t i, hmask = tpl->hmask; |
1165 | for (i = 0; i <= hmask; i++) { | 1166 | for (i = 0; i <= hmask; i++) { |