diff options
author | Mike Pall <mike> | 2020-12-28 12:37:36 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2020-12-28 12:37:36 +0100 |
commit | 56c04accf975bff2519c34721dccbbdb7b8e6963 (patch) | |
tree | 334ca6d3664bdc610c5c8950c2674d3840a97f4a /src | |
parent | d67ff15a5cf11dff46fa2288e0c074526548db2b (diff) | |
download | luajit-56c04accf975bff2519c34721dccbbdb7b8e6963.tar.gz luajit-56c04accf975bff2519c34721dccbbdb7b8e6963.tar.bz2 luajit-56c04accf975bff2519c34721dccbbdb7b8e6963.zip |
FFI: Fix recording of union initialization.
Thanks to Alex Shpilkin.
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_crecord.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c index 6e3c36a1..0287b95b 100644 --- a/src/lj_crecord.c +++ b/src/lj_crecord.c | |||
@@ -959,6 +959,11 @@ static void crec_alloc(jit_State *J, RecordFFData *rd, CTypeID id) | |||
959 | dp = emitir(IRT(IR_ADD, IRT_PTR), trcd, | 959 | dp = emitir(IRT(IR_ADD, IRT_PTR), trcd, |
960 | lj_ir_kintp(J, df->size + sizeof(GCcdata))); | 960 | lj_ir_kintp(J, df->size + sizeof(GCcdata))); |
961 | crec_ct_tv(J, dc, dp, sp, sval); | 961 | crec_ct_tv(J, dc, dp, sp, sval); |
962 | if ((d->info & CTF_UNION)) { | ||
963 | if (d->size != dc->size) /* NYI: partial init of union. */ | ||
964 | lj_trace_err(J, LJ_TRERR_NYICONV); | ||
965 | break; | ||
966 | } | ||
962 | } else if (!ctype_isconstval(df->info)) { | 967 | } else if (!ctype_isconstval(df->info)) { |
963 | /* NYI: init bitfields and sub-structures. */ | 968 | /* NYI: init bitfields and sub-structures. */ |
964 | lj_trace_err(J, LJ_TRERR_NYICONV); | 969 | lj_trace_err(J, LJ_TRERR_NYICONV); |