Very good. I had been looking at that, just wanted to be sure it was the Approved(tm) method.
Bill
The most common approach is to use safe_apply_svalue(), it unfortunately only supports two error handling modes; either passing errors along to master()->handle_error(), or ignoring them entirely. If you want some other behaviour, you will need to set up the error recovery context yourself (cf interpret.c:safe_apply_svalue()).