From d4420de5ab3ab69f917ffaed4c29a3e3e61341ca Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 4 May 2017 06:00:05 -0700 Subject: doc: clarify when exit points are torn down. * txr.1: Adding a paragraph under unwind-protect clarifying that exit points are removed during unwinding, not during the search for an exit point. --- txr.1 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/txr.1 b/txr.1 index efbad32f..95d79f2b 100644 --- a/txr.1 +++ b/txr.1 @@ -34193,6 +34193,17 @@ a dynamic control transfer such as an exception, and that initiates its own dynamic control transfer, the original control transfer is aborted and replaced with the new one. +The exit points for dynamic control transfers are removed as unwinding takes +place. That is to say, at the start of a dynamic control transfer, a search +takes place for the target exit point. That search might skip other exit points +which aren't targets of the control transfer. Those skipped exit points are left +undisturbed and are still visible during unwinding until their individual +binding forms are abandoned. Thus at the time of execution of an +.code unwind-protect +.metn cleanup-form , +all of the exit points of dynamically surrounding forms are still visible, even +ones which are nearer than the targeted exit point. + .TP* Example: .cblk (block foo -- cgit v1.2.3