On Thu, Jun 27, 2019 at 2:01 PM Marcel Fabian Krüger <t...@2krueger.de> wrote:
> Hi everyone, > > in current LuaTeX versions, the result of `linebreak` filter is ignored > and instead it is always treated as if no node has been returned (so the > internal linebreak algorithm is applied). A minimal example: > > > \directlua{ > callback.register("linebreak_filter", function(nodes) > return node.hpack(nodes) > end) > } > Some very very very very very very very very very very very very very > very very very very very very very very very very very very very very > very very very very very very very very very very very very very very > very very very very very very very very very very very very very very > very very very very very very very very very very very very very very > very very very long paragraph. > \bye > > You would expect the whole paragraph to be set in a single line, but > normal paragraph breaking is applies instead. This is caused by a change > in revision 6686 from Mar 29 2018 "experimental) possible fix for for lua > stack issue + consistent error handling (HH)". There in the function > lua_linebreak_callback, the change > > return ret; > } > + lua_settop(Luas, s_top); > p = lua_touserdata(Luas, -1); > if (p != NULL) { > a = nodelist_from_lua(Luas); > try_couple_nodes(*new_head,a); > ret = 1; > } > - lua_settop(Luas, s_top); > return ret; > > has been applied. I am not sure what kind of stack issue this was > supposed to fix, but as a side effect this moves the check for the node > return value after `lua_settop`, so the return value is already removed > from the stack when the test is done. So it is ignored. > hm, I will try reverting the code to see when the stack issue appears. -- luigi
_______________________________________________ dev-luatex mailing list dev-luatex@ntg.nl https://mailman.ntg.nl/mailman/listinfo/dev-luatex