~ chicken-core (chicken-5) 388d3432ad56ad8513a3ab86da836b2d94e747d0


commit 388d3432ad56ad8513a3ab86da836b2d94e747d0
Author:     megane <meganeka@gmail.com>
AuthorDate: Fri Aug 3 13:54:05 2018 +0300
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Sat Aug 4 11:41:07 2018 +0200

    * eval.scm (compile): Remove failing environment lookup in ##core#set!
    
    The x is the full expression (e.g. '(##core#set! foo bar)) which
    should never be in the syntax environment.
    
    Signed-off-by: Peter Bex <peter@more-magic.net>
    Signed-off-by: felix <felix@call-with-current-continuation.org>

diff --git a/eval.scm b/eval.scm
index f1c5bb6c..e31fbfce 100644
--- a/eval.scm
+++ b/eval.scm
@@ -262,14 +262,10 @@
 					 (and-let* ((a (assq var (##sys#current-environment)))
 						    ((symbol? (cdr a))))
 					   (##sys#notice "assignment to imported value binding" var)))
-				       (let ((var
-					      (cond ((assq x (##sys#current-environment)) j) ;XXX this looks wrong
-						    ((not static)
-						     (##sys#alias-global-hook j #t cntr))
-						    (else #f))))
-					 (if (not var) ; static
-					     (lambda (v)
-					       (##sys#error 'eval "environment is not mutable" evalenv var)) ;XXX var?
+				       (if static
+					   (lambda (v)
+					     (##sys#error 'eval "environment is not mutable" evalenv var)) ;XXX var?
+					   (let ((var (##sys#alias-global-hook j #t cntr)))
 					     (lambda (v)
 					       (let ((result (##core#app val v)))
 						 (##core#inline "C_i_persist_symbol" var)
Trap