Function: unwind-protect

unwind-protect is a special form defined in eval.c.

Signature

(unwind-protect BODYFORM UNWINDFORMS...)

Documentation

Do BODYFORM, protecting with UNWINDFORMS.

If BODYFORM completes normally, its value is returned after executing the UNWINDFORMS. If BODYFORM exits nonlocally, the UNWINDFORMS are executed anyway.

View in manual

Probably introduced at or before Emacs version 19.23.

Source Code

// Defined in /usr/src/emacs/src/eval.c
{
  Lisp_Object val;
  specpdl_ref count = SPECPDL_INDEX ();

  record_unwind_protect (prog_ignore, XCDR (args));
  val = eval_sub (XCAR (args));
  return unbind_to (count, val);
}