Fixed bug in set-var.
[scheme.forth.jl.git] / src / scheme.4th
index ebbf159..cf3ddc5 100644 (file)
@@ -485,6 +485,7 @@ objvar var \ Used only for error messages
 
 : set-var ( var val env -- )
     2rot 2dup var obj! ( val env var )
+    2swap ( val var env )
     get-vals nil? if
         except-message: ." tried to set unbound variable '" var obj@ print ." '."
         recoverable-exception throw
@@ -497,15 +498,16 @@ hide var
 
 : define-var ( var val env -- )
     first-frame ( var val frame )
-    2rot 2over 2over ( val frame var frame var )
+    2rot 2swap 2over 2over ( val var frame var frame )
 
     get-vals-frame nil? if
-        2drop ( val frame var )
-        -2rot add-binding
+        2drop
+        -2rot 2swap 2rot
+        add-binding
     else
-        ( val frame var vals )
+        ( val var frame vals )
         2swap 2drop 2swap 2drop
-        cons
+        set-car!
     then
 ;