summaryrefslogtreecommitdiffstats
path: root/socket.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2024-01-06 23:58:14 -0800
committerKaz Kylheku <kaz@kylheku.com>2024-01-06 23:58:14 -0800
commit1d427b61be3f8f42a6e740b3080102f54f4d806b (patch)
treebd58be9dc17baf2f5143db3b146ba0357ae0ec4e /socket.h
parent5464e5ab1ae7d1eeba1dfbea36bc5e81714d1694 (diff)
downloadtxr-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.h')
0 files changed, 0 insertions, 0 deletions