FMSLogo leaks the NODE* containing the instruction which launched the editor if a MESSAGEBOX is shown while the editor is running and the editor is dismissed before the MESSAGEBOX.
The leaked NODE* is stored into the global variable current_line and is dereferenced correctly if there is no MESSAGEBOX. I suspect this has something to do with logic for saving and restoring current_line when a nested execution context is started.
I can reproduce this on FMSLogo 7.5.0. I have not tried to see when it was introduced.
How Reproducible
Every Time
Steps to Reproduce:
1) Start a debug version of FMSLogo (one which prints out memory leaks)
2) Run
edit [] messagebox [close editor first] []
3) Dismiss the editor
4) Dismiss the message box
What Happens:
When FMSLogo closes, it prints out that it has leaked two allocations, one is 32 bytes (the NODE) and the other is 45 bytes starting with " edit [" (the string of the instruction that was run).
Expected Result:
When FMSLogo closes, it prints out that there were no memory leaks.