diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2024-01-06 23:58:14 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2024-01-06 23:58:14 -0800 |
commit | 1d427b61be3f8f42a6e740b3080102f54f4d806b (patch) | |
tree | bd58be9dc17baf2f5143db3b146ba0357ae0ec4e /socket.c | |
parent | 5464e5ab1ae7d1eeba1dfbea36bc5e81714d1694 (diff) | |
download | txr-1d427b61be3f8f42a6e740b3080102f54f4d806b.tar.gz txr-1d427b61be3f8f42a6e740b3080102f54f4d806b.tar.bz2 txr-1d427b61be3f8f42a6e740b3080102f54f4d806b.zip |
lib: review cobj calls for gc incorrectness and fix.
I looked at all cobj calls to see if there is a potential
problem, looking for situations whereby the cobj call could
trigger a gc that would destroy Lisp objects that the
new object either stores, or that its continued initialization
depends on.
* stream.c (make_strlist_input_stream): call cobj earlier,
then fill in the structure. Use chk_calloc to allocate
the structure so any Lisp objects in it look like nil
until it is initialized.
* struct.c (make_struct_impl, make_lazy_struct):
Use gc_hint on the type argument, to pin down the
st structure that we use in initializations after
the cobj call. If the type object were to disappear,
the st structure would become invalid.
* tree.c (copy_search_tree, make_similar_tree):
Use gc_hint on the tree argument to pin down the otr
structure that we reference in initializations
(copy_tree_iter): Use gc_hint on iter, for similar
reasons.
* vm.c (vm_copy_closure): Use gc_hint on oclosure,
to pin down the environment we are copying from it.
Diffstat (limited to 'socket.c')
0 files changed, 0 insertions, 0 deletions