Hi, Sergey! Thanks for the review! Fixed your comments and force-pushed the branch. > > From: Sergey Kaplun > To: Evgeniy Temirgaleev > Cc: Sergey Bronnikov , tarantool-patches@dev.tarantool.org > > Date: Tuesday, June 30, 2026 1:06 PM +03:00 > Hi, Evgeniy! > Thanks for the patch! > LGTM, with minor nits below. > > On 29.06.26, Evgeniy Temirgaleev wrote: > > From: Mike Pall > > > > Thanks to Temir Galeev. #1470 > > > > Please strip the issue number to avoid overmentioning the ticket on > GitHub. (The Issue can be easily found by the cherry-picked commit, > though). This helps to avoid overmentioning during the review and > applying the patch to long-term branches. > Removed. > > > > > > (cherry picked from commit 72d2061ae2fa9a5fd45237943f9982baf59435ec) > > > > This patch fixes invalid os.time(t) behavior, when it handles -1 time > value > > Typo: s/, when/ when/ > Typo: s/-1/the -1/ > Fixed. > > > > 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. > > Side note: It looks like the patch is outdated compared to the branch. > Yes, thanks! > > > > +-- 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) > > Nit: We use everywhere in Lua code single quotes if possible (see other > tests). > Fixed. ====================================== 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 index aa913607..dfe1ee11 100644 --- 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 @@ -7,7 +7,7 @@ local test = tap.test('lj-1470-os-time-epoch-minus-1s') test:plan(1) -local minus_1s_time = os.date("*t", -1) +local minus_1s_time = os.date('*t', -1) test:is(os.time(minus_1s_time), -1, 'correct os.time()') test:done(true) ====================================== > > > > +test:is(os.time(minus_1s_time), -1, 'correct os.time()') > > + > > +test:done(true) > > -- > > 2.49.0 > > > > -- > Best regards, > Sergey Kaplun > -- Best regards, Evgeniy Temirgaleev