aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2018-01-29 12:47:08 +0100
committerMike Pall <mike>2018-01-29 12:47:08 +0100
commitb03a56f28ec360bbcf43091afd0607890a4a33c7 (patch)
treee8ca6face0a82f440512ad01067c17390fdf5ae8 /src
parentc88602f080dcafea6ba222a2f7cc1ea0e41ef3cc (diff)
downloadluajit-b03a56f28ec360bbcf43091afd0607890a4a33c7.tar.gz
luajit-b03a56f28ec360bbcf43091afd0607890a4a33c7.tar.bz2
luajit-b03a56f28ec360bbcf43091afd0607890a4a33c7.zip
FFI: Don't assert on #1LL (5.2 compatibility mode only).
Reported by Denis Golovan.
Diffstat (limited to 'src')
-rw-r--r--src/lib_ffi.c2
-rw-r--r--src/lj_carith.c9
-rw-r--r--src/lj_carith.h1
3 files changed, 11 insertions, 1 deletions
diff --git a/src/lib_ffi.c b/src/lib_ffi.c
index f2f2ede4..83483d95 100644
--- a/src/lib_ffi.c
+++ b/src/lib_ffi.c
@@ -193,7 +193,7 @@ LJLIB_CF(ffi_meta___eq) LJLIB_REC(cdata_arith MM_eq)
193 193
194LJLIB_CF(ffi_meta___len) LJLIB_REC(cdata_arith MM_len) 194LJLIB_CF(ffi_meta___len) LJLIB_REC(cdata_arith MM_len)
195{ 195{
196 return ffi_arith(L); 196 return lj_carith_len(L);
197} 197}
198 198
199LJLIB_CF(ffi_meta___lt) LJLIB_REC(cdata_arith MM_lt) 199LJLIB_CF(ffi_meta___lt) LJLIB_REC(cdata_arith MM_lt)
diff --git a/src/lj_carith.c b/src/lj_carith.c
index 6224dee6..c34596ca 100644
--- a/src/lj_carith.c
+++ b/src/lj_carith.c
@@ -272,6 +272,15 @@ int lj_carith_op(lua_State *L, MMS mm)
272 return lj_carith_meta(L, cts, &ca, mm); 272 return lj_carith_meta(L, cts, &ca, mm);
273} 273}
274 274
275/* No built-in functionality for length of cdata. */
276int lj_carith_len(lua_State *L)
277{
278 CTState *cts = ctype_cts(L);
279 CDArith ca;
280 carith_checkarg(L, cts, &ca);
281 return lj_carith_meta(L, cts, &ca, MM_len);
282}
283
275/* -- 64 bit integer arithmetic helpers ----------------------------------- */ 284/* -- 64 bit integer arithmetic helpers ----------------------------------- */
276 285
277#if LJ_32 && LJ_HASJIT 286#if LJ_32 && LJ_HASJIT
diff --git a/src/lj_carith.h b/src/lj_carith.h
index 3c155910..82fc8245 100644
--- a/src/lj_carith.h
+++ b/src/lj_carith.h
@@ -11,6 +11,7 @@
11#if LJ_HASFFI 11#if LJ_HASFFI
12 12
13LJ_FUNC int lj_carith_op(lua_State *L, MMS mm); 13LJ_FUNC int lj_carith_op(lua_State *L, MMS mm);
14LJ_FUNC int lj_carith_len(lua_State *L);
14 15
15#if LJ_32 && LJ_HASJIT 16#if LJ_32 && LJ_HASJIT
16LJ_FUNC int64_t lj_carith_mul64(int64_t x, int64_t k); 17LJ_FUNC int64_t lj_carith_mul64(int64_t x, int64_t k);