summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2011-12-14 12:14:56 -0800
committerKaz Kylheku <kaz@kylheku.com>2011-12-14 12:14:56 -0800
commit535e853d369f49f8b45e35cd21dd2f7495445429 (patch)
tree3649e9f6ede9d9dc6a17ae94603a178ccabd991d /eval.c
parent2353d721c0a48ace406ad955ab02cb90a52bde11 (diff)
downloadtxr-535e853d369f49f8b45e35cd21dd2f7495445429.tar.gz
txr-535e853d369f49f8b45e35cd21dd2f7495445429.tar.bz2
txr-535e853d369f49f8b45e35cd21dd2f7495445429.zip
* eval.c (op_dohash): Esbatlish anonymous block.
* txr.1: Finished documenting special operators.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index 6ba918ed..e4931400 100644
--- a/eval.c
+++ b/eval.c
@@ -647,13 +647,19 @@ static val op_dohash(val form, val env)
val new_env = make_env(cons(keyvar, cons(valvar, nil)), nil, env);
val cell;
+ uw_block_begin (nil, result);
+
while ((cell = hash_next(&iter)) != nil) {
*cdr_l(keyvar) = car(cell);
*cdr_l(valvar) = cdr(cell);
eval_progn(body, new_env, form);
}
- return eval(resform, new_env, form);
+ result = eval(resform, new_env, form);
+
+ uw_block_end;
+
+ return result;
}
static val op_unwind_protect(val form, val env)