First of all: s.ostanevich@s-ostanevich2:~/workspaces/t.sergos % uname -a Darwin s-ostanevich2 21.6.0 Darwin Kernel Version 21.6.0: Mon Aug 22 20:17:10 PDT 2022; root:xnu-8020.140.49~2/RELEASE_X86_64 x86_64 Then I just built Tarantool with ninja: Tarantool 2.11.0-entrypoint-494-gdc147ec91 Target: Darwin-x86_64-debug Then I brought the test as a patch from the mail and run ninja test. The output says the test passes, while sources contains no patch. Am I missing something? Sergos > On 20 Sep 2022, at 12:58, Maxim Kokryashkin wrote: > > Hi! > Are you sure you are doing everything right? > I’ve tested the test case both on M1 and x86 platforms and it works perfectly fine. > -- > Best regards, > Maxim Kokryashkin > > > Вторник, 20 сентября 2022, 11:53 +03:00 от sergos : > > Hi! > > Thanks for the patch! > > Unfortunately, the test doesn’t fail for me, using tarantool test: > > /Users/s.ostanevich/workspaces/t.sergos/third_party/luajit/test/tarantool-tests/lj-695-ffi-vararg-call.test.lua ...................... ok > /Users/s.ostanevich/workspaces/t.sergos/third_party/luajit/test/tarantool-tests/lj-584-bad-renames-for-sunk-values.test.lua .......... ok > /Users/s.ostanevich/workspaces/t.sergos/third_party/luajit/test/tarantool-tests/lj-408-tonumber-cdata-record.test.lua ................ ok > /Users/s.ostanevich/workspaces/t.sergos/third_party/luajit/test/tarantool-tests/gh-6189-cur_L.test.lua ............................... ok > /Users/s.ostanevich/workspaces/t.sergos/third_party/luajit/test/tarantool-tests/lj-418-assert-any-type.test.lua ...................... ok > > The sources at the build time are: > > void LJ_FASTCALL lj_crecord_tonumber(jit_State *J, RecordFFData *rd) > { > CTState *cts = ctype_ctsG(J2G(J)); > CType *d, *ct = lj_ctype_rawref(cts, cdataV(&rd->argv[0])->ctypeid); > if (ctype_isenum(ct->info)) ct = ctype_child(cts, ct); > if (ctype_isnum(ct->info) || ctype_iscomplex(ct->info)) { > if (ctype_isinteger_or_bool(ct->info) && ct->size <= 4 && > !(ct->size == 4 && (ct->info & CTF_UNSIGNED))) > d = ctype_get(cts, CTID_INT32); > else > d = ctype_get(cts, CTID_DOUBLE); > J->base[0] = crec_ct_tv(J, d, 0, J->base[0], &rd->argv[0]); > } else { > J->base[0] = TREF_NIL; > } > } > > Means, test passess even without the patch. > > Sergos > >> On 19 Sep 2022, at 10:50, Maxim Kokryashkin > wrote: >> >> Hi, Sergey! >> Thanks for the patch! >> LGTM, except for a single nit below: >> >> When `tonumber()` is recorded (as a part of a trace) for cdata argument >> can't be converted to number the `nil` value is recorded as the yielded >> result. But without special check on trace for cdata type this nil will >> be returned for another type of cdata that can be converted. >> The first sentence lacks commas and is completely unreadable. >> I suggest the following fix: >> | When `tonumber()` is recorded (as a part of a trace) for a cdata argument that can't be converted to number, the `nil` value is | recorded as the yielded result. >> >> This patch adds the corresponding check for recoding of failed cdata >> conversions. >> Typo: s/recoding/recording >> >> >> -- >> Best regards, >> Maxim Kokryashkin >> > >