aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lj_crecord.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c
index 4119533f..4e64f431 100644
--- a/src/lj_crecord.c
+++ b/src/lj_crecord.c
@@ -860,8 +860,11 @@ again:
860 860
861 /* Resolve reference for field. */ 861 /* Resolve reference for field. */
862 ct = ctype_get(cts, sid); 862 ct = ctype_get(cts, sid);
863 if (ctype_isref(ct->info)) 863 if (ctype_isref(ct->info)) {
864 ptr = emitir(IRT(IR_XLOAD, IRT_PTR), ptr, 0); 864 ptr = emitir(IRT(IR_XLOAD, IRT_PTR), ptr, 0);
865 sid = ctype_cid(ct->info);
866 ct = ctype_get(cts, sid);
867 }
865 868
866 while (ctype_isattrib(ct->info)) 869 while (ctype_isattrib(ct->info))
867 ct = ctype_child(cts, ct); /* Skip attributes. */ 870 ct = ctype_child(cts, ct); /* Skip attributes. */