summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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))]