latex3 / latex2e

The LaTeX2e kernel
https://www.latex-project.org/
LaTeX Project Public License v1.3c
1.9k stars 263 forks source link

`flush_list` undefined in `ltluatex` #644

Closed vlasakm closed 2 years ago

vlasakm commented 3 years ago

Brief outline of the bug

flush_list is undefined in ltluatex, but should be node.flush_list.

That particular code path will probably never be exercised in practice, but the fix is easy.

Minimal example showing the bug

\RequirePackage{latexbug}
\documentclass{article}

\begin{document}

\directlua{luatexbase.add_to_callback("pre_mlist_to_hlist_filter", function(...)
    return false
end, "dummy")}

$ a $

\end{document}

Actual output:

This is LuaHBTeX, Version 1.13.2 (TeX Live 2021)
 restricted system commands enabled.
(./test.tex
LaTeX2e <2021-06-01> patch level 1
 L3 programming layer <2021-07-12> (/home/michal/src/texlive/texmf-dist/tex/latex/latexbug/latexbug.sty) (/home/michal/src/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2021/02/12 v1.4n Standard LaTeX document class
(/home/michal/src/texlive/texmf-dist/tex/latex/base/size10.clo)) (/home/michal/src/texlive/texmf-dist/tex/latex/l3backend/l3backend-luatex.def) (./test.aux) (/home/michal/src/texlive/texmf-dist/tex/latex/base/ts1cmr.fd)
Module luatexbase Warning: Function `dummy' returned false
(luatexbase)               in callback `pre_mlist_to_hlist_filter' on input line 10

warning  (mlist to hlist): error: ...ichal/src/texlive/texmf-dist/tex/latex/base/ltluatex.lua:609: attempt to call a nil value (global 'flush_list')
.
l.10 $ a $

Expected output:

This is LuaHBTeX, Version 1.13.2 (TeX Live 2021)
 restricted system commands enabled.
(./test.tex
LaTeX2e <2021-06-01> patch level 1
 L3 programming layer <2021-07-12> (/home/michal/src/texlive/texmf-dist/tex/latex/latexbug/latexbug.sty) (/home/michal/src/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2021/02/12 v1.4n Standard LaTeX document class
(/home/michal/src/texlive/texmf-dist/tex/latex/base/size10.clo)) (/home/michal/src/texlive/texmf-dist/tex/latex/l3backend/l3backend-luatex.def) (./test.aux) (/home/michal/src/texlive/texmf-dist/tex/latex/base/ts1cmr.fd)
Module luatexbase Warning: Function `dummy' returned false
(luatexbase)               in callback `pre_mlist_to_hlist_filter' on input line 10
[1{/home/michal/src/texlive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./test.aux))
 406 words of node memory still in use:
   3 hlist, 1 vlist, 1 rule, 2 glue, 3 kern, 1 glyph, 4 attribute, 48 glue_spec, 4 attribute_list, 1 write nodes
   avail lists: 1:1,2:25,3:4,4:1,5:23,6:2,7:30,8:1,9:18
</usr/share/fonts/OTF/lmroman10-regular.otf>
Output written on test.pdf (1 page, 2414 bytes).
Transcript written on test.log.

Fix

--- a/base/ltluatex.dtx
+++ b/base/ltluatex.dtx
@@ -918,6 +918,7 @@ local tex_count        = tex.count
 local tex_setattribute = tex.setattribute
 local tex_setcount     = tex.setcount
 local texio_write_nl   = texio.write_nl
+local flush_list       = node.flush_list
 %    \end{macrocode}
 % \changes{v1.0i}{2015/11/29}{Declare this as local before used in the module error definitions (PHG)}
 %    \begin{macrocode}
zauguin commented 3 years ago

@vlasakm Thanks for catching this. It will be fixed in the next release.