summaryrefslogtreecommitdiffstats
path: root/socket.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2024-03-01 23:15:26 -0800
committerKaz Kylheku <kaz@kylheku.com>2024-03-01 23:15:26 -0800
commit06bd10fd45dc008fe0ea4909254b2e951e715809 (patch)
tree596f442e02bf5f9cd1f4ca80248373902e4d552d /socket.c
parent1134089866fde0478fe869aa6fa13e105325ddcd (diff)
downloadtxr-06bd10fd45dc008fe0ea4909254b2e951e715809.tar.gz
txr-06bd10fd45dc008fe0ea4909254b2e951e715809.tar.bz2
txr-06bd10fd45dc008fe0ea4909254b2e951e715809.zip
mapcar: avoid alloca proportional to number of args.
* eval.c (MAP_ALLOCA_LIMIT): New preprocessor symbol. (map_common): If the number of args is greater than MAP_ALLOCA_LIMIT, then allocate the array of seq_iter_t structures from chk_malloc rather than alloca. In case an exception might be thrown during the execution of this function, we bind that memory to a buf object. If we return normally, we call the new function buf_free to release it. Otherwise we rely on the garbage collector. * buf.[ch] (buf_free): New function. * tests/012/seq.tl: Test case which hits this behavior.
Diffstat (limited to 'socket.c')
0 files changed, 0 insertions, 0 deletions