]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
fix(lua-lupa): Use local loop variable 6130/head
authorEthan D. Twardy <ethan.twardy@gmail.com>
Fri, 10 Jul 2026 23:03:58 +0000 (18:03 -0500)
committerEthan D. Twardy <ethan.twardy@gmail.com>
Fri, 10 Jul 2026 23:13:07 +0000 (18:13 -0500)
Lua 5.5 makes `for` expression variables constant. The recent upgrade to
lua 5.5 broke lua-lupa, which previously attempted to modify the loop
variable. This caused an unrecoverable error on startup:

rspamd_lua_require_function: require of lua_util.jinja_template failed: error loading module 'lupa' from file '/usr/share/rspamd/lualib/lupa.lua':\x0A\x09/usr/share/rspamd/lualib/lupa.lua:1858: attempt to assign to const variable 'word'

contrib/lua-lupa/lupa.lua

index 98cbe8e191de5e8a1608ac28500afb4d879925e9..db7edb12eb4e3c876da54299fb30241c6df1aa20 100644 (file)
@@ -1849,15 +1849,16 @@ function M.filters.wordwrap(s, width, break_long_words, wrapstring)
       line = ''
     end
     if #word > width and break_long_words then
+      local remaining = word
       if #line > 0 then
         lines[#lines + 1] = line
         line = ''
       end
-      while #word > width do
-        lines[#lines + 1] = word:sub(1, width)
-        word = word:sub(width + 1)
+      while #remaining > width do
+        lines[#lines + 1] = remaining:sub(1, width)
+        remaining = remaining:sub(width + 1)
       end
-      line = word
+      line = remaining
     elseif #line > 0 then
       line = line .. ' ' .. word
     else