summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eval.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/eval.c b/eval.c
index e1c75197..9219c8d4 100644
--- a/eval.c
+++ b/eval.c
@@ -3944,16 +3944,16 @@ static val me_case(val form, val menv)
if (keys == t)
eval_error(form_orig, lit("~s: symbol t used as key"), casesym, nao);
- if (consp(keys) && !cdr(keys))
- keys = car(keys);
-
if (star) {
if (atom(keys))
- keys = eval(keys, nil, form);
+ hash_keys = cons(keys = eval(keys, nil, form), nil);
else
- keys = eval(cons(list_s, keys), nil, form);
+ hash_keys = keys = eval(cons(list_s, keys), nil, form);
}
+ if (consp(keys) && !cdr(keys))
+ keys = car(keys);
+
if (atom(keys)) {
sethash(hash, keys, index);
if (!compares_with_eq(keys))