summaryrefslogtreecommitdiff
path: root/src/lj_crecord.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_crecord.c')
-rw-r--r--src/lj_crecord.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c
index 8473ee45..44c5844a 100644
--- a/src/lj_crecord.c
+++ b/src/lj_crecord.c
@@ -947,6 +947,11 @@ void LJ_FASTCALL recff_clib_index(jit_State *J, RecordFFData *rd)
947 947
948/* -- FFI library functions ----------------------------------------------- */ 948/* -- FFI library functions ----------------------------------------------- */
949 949
950static TRef crec_toint(jit_State *J, CTState *cts, TRef sp, TValue *sval)
951{
952 return crec_ct_tv(J, ctype_get(cts, CTID_INT32), 0, sp, sval);
953}
954
950void LJ_FASTCALL recff_ffi_new(jit_State *J, RecordFFData *rd) 955void LJ_FASTCALL recff_ffi_new(jit_State *J, RecordFFData *rd)
951{ 956{
952 crec_alloc(J, rd, argv2ctype(J, J->base[0], &rd->argv[0])); 957 crec_alloc(J, rd, argv2ctype(J, J->base[0], &rd->argv[0]));
@@ -959,7 +964,7 @@ void LJ_FASTCALL recff_ffi_string(jit_State *J, RecordFFData *rd)
959 if (tr) { 964 if (tr) {
960 TRef trlen = J->base[1]; 965 TRef trlen = J->base[1];
961 if (trlen) { 966 if (trlen) {
962 trlen = lj_ir_toint(J, trlen); 967 trlen = crec_toint(J, cts, trlen, &rd->argv[1]);
963 tr = crec_ct_tv(J, ctype_get(cts, CTID_P_CVOID), 0, tr, &rd->argv[0]); 968 tr = crec_ct_tv(J, ctype_get(cts, CTID_P_CVOID), 0, tr, &rd->argv[0]);
964 } else { 969 } else {
965 tr = crec_ct_tv(J, ctype_get(cts, CTID_P_CCHAR), 0, tr, &rd->argv[0]); 970 tr = crec_ct_tv(J, ctype_get(cts, CTID_P_CCHAR), 0, tr, &rd->argv[0]);