<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 29 Oct 2024 at 06:13, user202729--- via luatex <<a href="mailto:luatex@tug.org">luatex@tug.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I notice that the `run_put_next` function inserts the token list using<br>
<br>
        begin_token_list(h,0);<br>
<br>
however, this has the problem that in `end_token_list`, the token list is not freed when the type is `0` (i.e. `parameter`).<br>
<br>
I think the `0` should be changed to e.g. `inserted` (4), so that it is correctly freed.<br>
<br>
For a test case, consider the following program.<br>
<br>
```<br>
lualatex '\directlua{i=1; t=token.get_next()}~\def~#1A{\directlua{i=i+1;if i&1023==0 then print(i) end;for i=1,1000 do token.put_next(t); end}A}~A' </dev/null<br>
```<br>
<br>
Before the change, the memory usage grows steadily. After the change, the memory usage remains constant.<br>
<br>
Please take a look. Thank you.<br>
<br></blockquote><div><br></div><div> commit cd4888ec08e37cf0beae04be0a904d1df17eac41</div>Author: Luigi Scarso <<a href="mailto:luigi.scarso@gmail.com">luigi.scarso@gmail.com</a>><br>Date:   Sun Nov 3 13:17:40 2024 +0100<br><br>    Fixed a memory leak in token.put_next() and token.set_macro() (thanks to <a href="mailto:user202729@protonmail.com">user202729@protonmail.com</a>)<br><br>(also in texlive)</div><div class="gmail_quote"><br></div><div class="gmail_quote">--</div><div class="gmail_quote">luigi</div></div>