From 93c2b939bddbbe766f3215455d8144650df0780b Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sun, 8 Sep 2013 03:09:39 +0200 Subject: [PATCH] FFI: Fix argument checks for ffi.string(). --- src/lib_ffi.c | 2 +- src/lj_crecord.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib_ffi.c b/src/lib_ffi.c index f61fabc0..4503875a 100644 --- a/src/lib_ffi.c +++ b/src/lib_ffi.c @@ -657,7 +657,7 @@ LJLIB_CF(ffi_string) LJLIB_REC(.) TValue *o = lj_lib_checkany(L, 1); const char *p; size_t len; - if (o+1 < L->top) { + if (o+1 < L->top && !tvisnil(o+1)) { len = (size_t)ffi_checkint(L, 2); lj_cconv_ct_tv(cts, ctype_get(cts, CTID_P_CVOID), (uint8_t *)&p, o, CCF_ARG(1)); diff --git a/src/lj_crecord.c b/src/lj_crecord.c index df98e6ec..4f0dfa9a 100644 --- a/src/lj_crecord.c +++ b/src/lj_crecord.c @@ -1514,7 +1514,7 @@ void LJ_FASTCALL recff_ffi_string(jit_State *J, RecordFFData *rd) TRef tr = J->base[0]; if (tr) { TRef trlen = J->base[1]; - if (trlen) { + if (!tref_isnil(trlen)) { trlen = crec_toint(J, cts, trlen, &rd->argv[1]); tr = crec_ct_tv(J, ctype_get(cts, CTID_P_CVOID), 0, tr, &rd->argv[0]); } else {