Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package lua54 for openSUSE:Factory checked in at 2025-07-15 16:42:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/lua54 (Old) and /work/SRC/openSUSE:Factory/.lua54.new.7373 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lua54" Tue Jul 15 16:42:40 2025 rev:32 rq:1292454 version:5.4.8 Changes: -------- --- /work/SRC/openSUSE:Factory/lua54/lua54.changes 2025-04-25 22:18:04.052405225 +0200 +++ /work/SRC/openSUSE:Factory/.lua54.new.7373/lua54.changes 2025-07-15 16:43:15.098522979 +0200 @@ -1,0 +2,7 @@ +Sat Jul 12 18:38:52 UTC 2025 - Callum Farmer <gm...@opensuse.org> + +- Update to version 5.4.8: + * Fixed 8 bugs from 5.4.7 +- Add upstream1.patch: Numbered upstream patch + +------------------------------------------------------------------- Old: ---- lua-5.4.7-tests.tar.gz lua-5.4.7.tar.gz New: ---- lua-5.4.8-tests.tar.gz lua-5.4.8.tar.gz upstream1.patch ----------(New B)---------- New: * Fixed 8 bugs from 5.4.7 - Add upstream1.patch: Numbered upstream patch ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lua54.spec ++++++ --- /var/tmp/diff_new_pack.2MryNw/_old 2025-07-15 16:43:16.090559872 +0200 +++ /var/tmp/diff_new_pack.2MryNw/_new 2025-07-15 16:43:16.094560021 +0200 @@ -26,7 +26,7 @@ %define major_version 5.4 %define libname liblua5_4-5 Name: lua54%{name_ext} -Version: 5.4.7 +Version: 5.4.8 Release: 0 Summary: Small Embeddable Language with Procedural Syntax License: MIT @@ -45,6 +45,7 @@ Patch6: shared_link.patch # PATCH-FIX-UPSTREAM inspect errno only after failure Patch8: execresult.patch +Patch100: upstream1.patch Requires(post): update-alternatives Requires(postun):update-alternatives Provides: lua = %{version} ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.2MryNw/_old 2025-07-15 16:43:16.146561955 +0200 +++ /var/tmp/diff_new_pack.2MryNw/_new 2025-07-15 16:43:16.154562253 +0200 @@ -1,6 +1,6 @@ -mtime: 1745395177 -commit: b832770e086a5a1e39f71042603b98727463be28832c176b66ffaa599bc495a2 +mtime: 1752346359 +commit: a815e81e871e1d8075894cf0ba9f282ec29dbcfa31de38778d86de75c55c98bc url: https://src.opensuse.org/lua/lua54.git -revision: b832770e086a5a1e39f71042603b98727463be28832c176b66ffaa599bc495a2 +revision: a815e81e871e1d8075894cf0ba9f282ec29dbcfa31de38778d86de75c55c98bc projectscmsync: https://src.opensuse.org/lua/_ObsPrj.git ++++++ build.specials.obscpio ++++++ ++++++ lua-5.4.7-tests.tar.gz -> lua-5.4.8-tests.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lua-5.4.7-tests/all.lua new/lua-5.4.8-tests/all.lua --- old/lua-5.4.7-tests/all.lua 2024-06-14 00:15:10.000000000 +0200 +++ new/lua-5.4.8-tests/all.lua 2025-05-21 23:09:17.000000000 +0200 @@ -287,7 +287,7 @@ --[[ ***************************************************************************** -* Copyright (C) 1994-2016 Lua.org, PUC-Rio. +* Copyright (C) 1994-2025 Lua.org, PUC-Rio. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lua-5.4.7-tests/api.lua new/lua-5.4.8-tests/api.lua --- old/lua-5.4.7-tests/api.lua 2024-06-14 00:15:10.000000000 +0200 +++ new/lua-5.4.8-tests/api.lua 2025-05-21 23:09:17.000000000 +0200 @@ -399,6 +399,10 @@ -- trivial error assert(T.checkpanic("pushstring hi; error") == "hi") + -- thread status inside panic (bug in 5.4.4) + assert(T.checkpanic("pushstring hi; error", "threadstatus; return 2") == + "ERRRUN") + -- using the stack inside panic assert(T.checkpanic("pushstring hi; error;", [[checkstack 5 XX diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lua-5.4.7-tests/closure.lua new/lua-5.4.8-tests/closure.lua --- old/lua-5.4.7-tests/closure.lua 2024-06-14 00:15:10.000000000 +0200 +++ new/lua-5.4.8-tests/closure.lua 2025-05-21 23:09:17.000000000 +0200 @@ -3,6 +3,14 @@ print "testing closures" +do -- bug in 5.4.7 + _ENV[true] = 10 + local function aux () return _ENV[1 < 2] end + assert(aux() == 10) + _ENV[true] = nil +end + + local A,B = 0,{g=10} local function f(x) local a = {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lua-5.4.7-tests/coroutine.lua new/lua-5.4.8-tests/coroutine.lua --- old/lua-5.4.7-tests/coroutine.lua 2024-06-14 00:15:10.000000000 +0200 +++ new/lua-5.4.8-tests/coroutine.lua 2025-05-21 23:09:17.000000000 +0200 @@ -493,6 +493,25 @@ a = nil +do + -- bug in 5.4: thread can use message handler higher in the stack + -- than the variable being closed + local c = coroutine.create(function() + local clo <close> = setmetatable({}, {__close=function() + local x = 134 -- will overwrite message handler + error(x) + end}) + -- yields coroutine but leaves a new message handler for it, + -- that would be used when closing the coroutine (except that it + -- will be overwritten) + xpcall(coroutine.yield, function() return "XXX" end) + end) + + assert(coroutine.resume(c)) -- start coroutine + local st, msg = coroutine.close(c) + assert(not st and msg == 134) +end + -- access to locals of erroneous coroutines local x = coroutine.create (function () local a = 10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lua-5.4.7-tests/errors.lua new/lua-5.4.8-tests/errors.lua --- old/lua-5.4.7-tests/errors.lua 2024-06-14 00:15:10.000000000 +0200 +++ new/lua-5.4.8-tests/errors.lua 2025-05-21 23:09:17.000000000 +0200 @@ -137,6 +137,10 @@ -- bug in 5.4.6 checkmessage("a = {_ENV = {}}; print(a._ENV.x + 1)", "field 'x'") +-- a similar bug in 5.4.7, since 5.4.0 +checkmessage("print(('_ENV').x + 1)", "field 'x'") + + _G.aaa, _G.bbbb = nil -- calls diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lua-5.4.7-tests/events.lua new/lua-5.4.8-tests/events.lua --- old/lua-5.4.7-tests/events.lua 2024-06-14 00:15:10.000000000 +0200 +++ new/lua-5.4.8-tests/events.lua 2025-05-21 23:09:17.000000000 +0200 @@ -370,6 +370,19 @@ assert(x.val == "0abcdefg") +do + -- bug since 5.4.1 + local mt = setmetatable({__newindex={}}, {__mode='v'}) + local t = setmetatable({}, mt) + + if T then T.allocfailnext() end + + -- seg. fault + for i=1, 10 do t[i] = 1 end +end + + + -- concat metamethod x numbers (bug in 5.1.1) c = {} local x diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lua-5.4.7-tests/ltests/ltests.c new/lua-5.4.8-tests/ltests/ltests.c --- old/lua-5.4.7-tests/ltests/ltests.c 2024-06-14 00:15:10.000000000 +0200 +++ new/lua-5.4.8-tests/ltests/ltests.c 2025-05-21 23:09:16.000000000 +0200 @@ -1655,6 +1655,9 @@ int level = getnum; luaL_traceback(L1, L1, msg, level); } + else if EQ("threadstatus") { + lua_pushstring(L1, statcodes[lua_status(L1)]); + } else if EQ("return") { int n = getnum; if (L1 != L) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lua-5.4.7-tests/main.lua new/lua-5.4.8-tests/main.lua --- old/lua-5.4.7-tests/main.lua 2024-06-14 00:15:10.000000000 +0200 +++ new/lua-5.4.8-tests/main.lua 2025-05-21 23:09:17.000000000 +0200 @@ -349,6 +349,11 @@ RUN([[lua -e"_PROMPT='' _PROMPT2=''" -i < %s > %s]], prog, out) checkprogout("b\nc\nd\ne\n\n") +-- input interrupted in continuation line +prepfile("a.\n") +RUN([[lua -i < %s > /dev/null 2> %s]], prog, out) +checkprogout("near <eof>\n") + local prompt = "alo" prepfile[[ -- a = 2 ++++++ lua-5.4.7-tests.tar.gz -> lua-5.4.8.tar.gz ++++++ ++++ 63273 lines of diff (skipped) ++++++ upstream1.patch ++++++ >From 1b0f943da7dfb25987456a77259edbeea0b94edc Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy <robe...@inf.puc-rio.br> Date: Mon, 16 Jun 2025 16:33:02 -0300 Subject: [PATCH] Bug: new metatable in weak table can fool the GC All-weak tables are not being revisited after being visited during propagation; if it gets a new metatable after that, the new metatable may not be marked. --- lgc.c | 8 ++++++-- testes/gc.lua | 10 ++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lgc.c b/lgc.c index 5817f9eec3..c01660abc5 100644 --- a/src/lgc.c +++ b/src/lgc.c @@ -553,8 +553,12 @@ static lu_mem traversetable (global_State *g, Table *h) { traverseweakvalue(g, h); else if (!weakvalue) /* strong values? */ traverseephemeron(g, h, 0); - else /* all weak */ - linkgclist(h, g->allweak); /* nothing to traverse now */ + else { /* all weak */ + if (g->gcstate == GCSpropagate) + linkgclist(h, g->grayagain); /* must visit again its metatable */ + else + linkgclist(h, g->allweak); /* must clear collected entries */ + } } else /* not weak */ traversestrongtable(g, h); diff --git a/testes/gc.lua b/testes/gc.lua index 03093e34ff..f017f33056 100644 --- a/testes/gc.lua +++ b/testes/gc.lua @@ -301,6 +301,16 @@ collectgarbage() assert(next(a) == string.rep('$', 11)) +if T then -- bug since 5.3: all-weak tables are not being revisited + T.gcstate("propagate") + local t = setmetatable({}, {__mode = "kv"}) + T.gcstate("atomic") -- 't' was visited + setmetatable(t, {__mode = "kv"}) + T.gcstate("pause") -- its new metatable is not being visited + assert(getmetatable(t).__mode == "kv") +end + + -- 'bug' in 5.1 a = {} local t = {x = 10}