From 62f075cf2d0406fb14a3b24e5261d010799e4b5b Mon Sep 17 00:00:00 2001
From: Bronsa <brobronsa@gmail.com>
Date: Thu, 19 Apr 2012 17:05:13 +0200
Subject: [PATCH 1/2] fix persistentvector's pop

---
 src/cljs/cljs/core.cljs |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/cljs/cljs/core.cljs b/src/cljs/cljs/core.cljs
index 43f9062..c4155d5 100644
--- a/src/cljs/cljs/core.cljs
+++ b/src/cljs/cljs/core.cljs
@@ -2183,7 +2183,7 @@ reduces them without incurring seq initialization"
      (zero? cnt) (throw (js/Error. "Can't pop empty vector"))
      (== 1 cnt) (-with-meta cljs.core.PersistentVector/EMPTY meta)
      (< 1 (- cnt (tail-off coll)))
-      (PersistentVector. meta (dec cnt) shift root (aclone tail))
+      (PersistentVector. meta (dec cnt) shift root (.slice tail 0 -1))
       :else (let [new-tail (array-for coll (- cnt 2))
                   nr (pop-tail shift root)
                   new-root (if (nil? nr) cljs.core.PersistentVector/EMPTY_NODE nr)
-- 
1.7.9.1


From 72cfbfc63167a635b3f5d4ccc57c07df9512cb04 Mon Sep 17 00:00:00 2001
From: Bronsa <brobronsa@gmail.com>
Date: Thu, 19 Apr 2012 17:06:48 +0200
Subject: [PATCH 2/2] Add test for pop with PersistentVector

---
 test/cljs/cljs/core_test.cljs |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/test/cljs/cljs/core_test.cljs b/test/cljs/cljs/core_test.cljs
index 7e66a5e..aeca853 100644
--- a/test/cljs/cljs/core_test.cljs
+++ b/test/cljs/cljs/core_test.cljs
@@ -898,6 +898,14 @@
     (assert (= (nth pv 97 nil) nil))
     (assert (= (pv 96) 96)))
 
+  (let [pv (vec (range 33))]
+    (assert (= pv
+               (-> pv
+                   pop
+                   pop
+                   (conj 31)
+                   (conj 32)))))
+  
   (let [stack1 (pop (vec (range 97)))
         stack2 (pop stack1)]
     (assert (= 95 (peek stack1)))
-- 
1.7.9.1

