summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2009-03-19 13:51:32 +0000
committerRich Hickey <richhickey@gmail.com>2009-03-19 13:51:32 +0000
commit4f24b93c4b256a503b862cc5217a9507678fdffd (patch)
tree6f7005807f28ccf53e38d26e79e2870570a99fc6 /src
parentcb874e723057d22a3e711c179875edcda2ff3990 (diff)
fixed zip/remove when empty branch - patch from cgrand
Diffstat (limited to 'src')
-rw-r--r--src/clj/clojure/zip.clj8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/clj/clojure/zip.clj b/src/clj/clojure/zip.clj
index 77a2d8a3..81b09060 100644
--- a/src/clj/clojure/zip.clj
+++ b/src/clj/clojure/zip.clj
@@ -212,8 +212,8 @@
[loc]
(if-let [lloc (left loc)]
(loop [loc lloc]
- (if (branch? loc)
- (recur (-> loc down rightmost))
+ (if-let [child (and (branch? loc) (down loc))]
+ (recur (rightmost child))
loc))
(up loc)))
@@ -231,8 +231,8 @@
(throw (new Exception "Remove at top"))
(if (pos? (count l))
(loop [loc (with-meta [(peek l) (assoc path :l (pop l) :changed? true)] ^loc)]
- (if (branch? loc)
- (recur (-> loc down rightmost))
+ (if-let [child (and (branch? loc) (down loc))]
+ (recur (rightmost child))
loc))
(with-meta [(make-node loc (peek pnodes) rs)
(and ppath (assoc ppath :changed? true))]