summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hash.c2
-rw-r--r--share/txr/stdlib/place.tl18
2 files changed, 12 insertions, 8 deletions
diff --git a/hash.c b/hash.c
index e844d5f3..5c10364a 100644
--- a/hash.c
+++ b/hash.c
@@ -626,7 +626,7 @@ val sethash(val hash, val key, val value)
{
val new_p;
rplacd(gethash_c(hash, key, mkcloc(new_p)), value);
- return new_p;
+ return value;
}
val pushhash(val hash, val key, val value)
diff --git a/share/txr/stdlib/place.tl b/share/txr/stdlib/place.tl
index 81a506a5..29c8e1fa 100644
--- a/share/txr/stdlib/place.tl
+++ b/share/txr/stdlib/place.tl
@@ -312,15 +312,18 @@
^((sethash *place-delete-expander* ',name
(lambda (,deleter-sym ,place ,body-sym)
(tree-bind ,args (cdr ,place)
- ,delete-body)))))))))
+ ,delete-body)))))
+ ',name))))
(defmacro define-place-macro (name place-destructuring-args . body)
(with-gensyms (name-dummy args)
- ^(sethash *place-macro* ',name
- (lambda (,args)
- (mac-param-bind ,args
- (,name-dummy ,*place-destructuring-args)
- ,args ,*body)))))
+ ^(progn
+ (sethash *place-macro* ',name
+ (lambda (,args)
+ (mac-param-bind ,args
+ (,name-dummy ,*place-destructuring-args)
+ ,args ,*body)))
+ ',name)))
(defplace (sys:var arg) body
(getter setter
@@ -666,7 +669,8 @@
(lambda (ssetter place body)
^(macrolet ((,ssetter (val)
^(,',set-fun ,*(cdr ',place) ,val)))
- ,body))))
+ ,body)))
+ get-fun)
(defmacro define-accessor (get-fun set-fun)
^(sys:register-simple-accessor ',get-fun ',set-fun))