summaryrefslogtreecommitdiffstats
path: root/stdlib/copy-file.tl
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2022-06-05 17:56:31 -0700
committerKaz Kylheku <kaz@kylheku.com>2022-06-05 17:56:31 -0700
commit16305b28e7bd92a6f25610095d626d492020f3ee (patch)
tree372717339a172956afe858f17f0c556502cd1b30 /stdlib/copy-file.tl
parentf407a269b7db5509fd5e36abc4b1de67e281bdd1 (diff)
downloadtxr-16305b28e7bd92a6f25610095d626d492020f3ee.tar.gz
txr-16305b28e7bd92a6f25610095d626d492020f3ee.tar.bz2
txr-16305b28e7bd92a6f25610095d626d492020f3ee.zip
txr: fix --free-all crash due to atexit order.
The --free-all feature is broken. It is needed for confirming lack of memory leaks during development. What breaks it is the atexit call to run_load_hooks in eval.c, which occurs after the atexit call to free_all in txr.c which blows everything away. * Makefile (tst/tests/019/load-hook.ok): Let's put --free-all on this test case, because it has to with the load hooks. Make no mistake though: everything crashes with --free-all, not this test case specifically. * txr.c (opt_free_all): New global variable. (free_all): Free resources only if opt_free_all is true. Lose the paranoid called flag. (main): Register free_all with atexit before callilng init. This ensures that it will be called after any atexit handlers registered as part of init, like the one in sysif.c and eval.c. (txr_main): The --free-all option now just sets opt_free_all. * txr.h (opt_free_all): Declared.
Diffstat (limited to 'stdlib/copy-file.tl')
0 files changed, 0 insertions, 0 deletions