fixing bug in for where lambda body was self-evaluating
This commit is contained in:
parent
6962211e76
commit
ee9f565d89
|
@ -1163,7 +1163,8 @@ static value_t eval_sexpr(value_t e, uint32_t penv, int tail)
|
||||||
f = Stack[SP-5];
|
f = Stack[SP-5];
|
||||||
Stack[SP-3] = car_(f); // lambda list
|
Stack[SP-3] = car_(f); // lambda list
|
||||||
Stack[SP-2] = fixnum(s); // argument value
|
Stack[SP-2] = fixnum(s); // argument value
|
||||||
v = eval_sexpr(car_(cdr_(f)), SP-3, 0);
|
v = car_(cdr_(f));
|
||||||
|
if (!selfevaluating(v)) v = eval_sexpr(v, SP-3, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_SPECIAL_APPLY:
|
case F_SPECIAL_APPLY:
|
||||||
|
|
|
@ -66,6 +66,8 @@
|
||||||
|
|
||||||
(assert (equal (string 'sym #char(65) #wchar(945) "blah") "symA\u03B1blah"))
|
(assert (equal (string 'sym #char(65) #wchar(945) "blah") "symA\u03B1blah"))
|
||||||
|
|
||||||
|
; this crashed once
|
||||||
|
(for 1 10 (lambda (i) 0))
|
||||||
|
|
||||||
; ok, a couple end-to-end tests as well
|
; ok, a couple end-to-end tests as well
|
||||||
(define (fib n) (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2)))))
|
(define (fib n) (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2)))))
|
||||||
|
|
Loading…
Reference in New Issue