Hi, Evgeniy! Thanks for the patch! LGTM Sergey On 6/29/26 20:21, Evgeniy Temirgaleev wrote: > From: Mike Pall > > Thanks to Temir Galeev. #1470 > > (cherry picked from commit 72d2061ae2fa9a5fd45237943f9982baf59435ec) > > This patch fixes invalid os.time(t) behavior, when it handles -1 time value > as a fail of the libc mktime() regardless of the errno value. > > Temir Galeev: > * added the description and the test for the patch > > Part of tarantool/tarantool#12480 > --- > src/lib_os.c | 3 ++- > .../lj-1470-os-time-epoch-minus-1s.test.lua | 12 ++++++++++++ > 2 files changed, 14 insertions(+), 1 deletion(-) > create mode 100644 test/tarantool-tests/lj-1470-os-time-epoch-minus-1s.test.lua > > diff --git a/src/lib_os.c b/src/lib_os.c > index ffbc3fdc..f6841357 100644 > --- a/src/lib_os.c > +++ b/src/lib_os.c > @@ -242,9 +242,10 @@ LJLIB_CF(os_time) > ts.tm_mon = getfield(L, "month", -1) - 1; > ts.tm_year = getfield(L, "year", -1) - 1900; > ts.tm_isdst = getboolfield(L, "isdst"); > + errno = 0; > t = mktime(&ts); > } > - if (t == (time_t)(-1)) > + if (t == (time_t)(-1) && errno != 0) > lua_pushnil(L); > else > lua_pushnumber(L, (lua_Number)t); > diff --git a/test/tarantool-tests/lj-1470-os-time-epoch-minus-1s.test.lua b/test/tarantool-tests/lj-1470-os-time-epoch-minus-1s.test.lua > new file mode 100644 > index 00000000..6b5703e4 > --- /dev/null > +++ b/test/tarantool-tests/lj-1470-os-time-epoch-minus-1s.test.lua > @@ -0,0 +1,12 @@ > +local tap = require('tap') > + > +-- The test file demonstrates os.time() fail to return -1 time value. > +-- See also:https://github.com/LuaJIT/LuaJIT/issues/1470. > +local test = tap.test('lj-1470-os-time-epoch-minus-1s') > + > +test:plan(1) > + > +local minus_1s_time = os.date("*t", -1) > +test:is(os.time(minus_1s_time), -1, 'correct os.time()') > + > +test:done(true)