From 4f24b93c4b256a503b862cc5217a9507678fdffd Mon Sep 17 00:00:00 2001 From: Rich Hickey Date: Thu, 19 Mar 2009 13:51:32 +0000 Subject: fixed zip/remove when empty branch - patch from cgrand --- src/clj/clojure/zip.clj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') 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))] -- cgit v1.2.3-70-g09d2