Browse Source

FFI: Fix argument checks for ffi.string().

Mike Pall 12 năm trước cách đây
mục cha
commit
93c2b939bd
2 tập tin đã thay đổi với 2 bổ sung2 xóa
  1. 1 1
      src/lib_ffi.c
  2. 1 1
      src/lj_crecord.c

+ 1 - 1
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));

+ 1 - 1
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 {