summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-02-14 17:51:06 -0800
committerKaz Kylheku <kaz@kylheku.com>2014-02-14 17:51:06 -0800
commit48fbe97484faad462a1fc52049d682fdaaa665a0 (patch)
tree35ecc890d2d01ba21c03b67dd3e7a5753a6b53b7
parent5fcb0c9d430cf3ebb4c180ff38e805c6d18d5dea (diff)
downloadtxr-48fbe97484faad462a1fc52049d682fdaaa665a0.tar.gz
txr-48fbe97484faad462a1fc52049d682fdaaa665a0.tar.bz2
txr-48fbe97484faad462a1fc52049d682fdaaa665a0.zip
* hash.c (hash_update): Avoid double cdr.
-rw-r--r--ChangeLog4
-rw-r--r--hash.c6
2 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 00111bf3..00fff529 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2014-02-14 Kaz Kylheku <kaz@kylheku.com>
+ * hash.c (hash_update): Avoid double cdr.
+
+2014-02-14 Kaz Kylheku <kaz@kylheku.com>
+
* hash.c (inhash): Simplify with gethash_c.
2014-02-14 Kaz Kylheku <kaz@kylheku.com>
diff --git a/hash.c b/hash.c
index 6a4143d6..55906c2e 100644
--- a/hash.c
+++ b/hash.c
@@ -1008,8 +1008,10 @@ val hash_update(val hash, val fun)
{
val iter = hash_begin(hash);
val cell;
- while ((cell = hash_next(iter)) != nil)
- rplacd(cell, funcall1(fun, cdr(cell)));
+ while ((cell = hash_next(iter)) != nil) {
+ val *loc = cdr_l(cell);
+ set(*loc, funcall1(fun, *loc));
+ }
return hash;
}