From 51546bd5c1321a15b28a23954bc4c8df5cd1cefd Mon Sep 17 00:00:00 2001
From: Paul Stadig <paul@stadig.name>
Date: Mon, 1 Oct 2012 11:04:55 -0400
Subject: [PATCH] CLJ-1077: thread-bound? should return true only for
 set!-able vars.

---
 src/clj/clojure/core.clj      |    2 +-
 src/jvm/clojure/lang/Var.java |    5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj
index acefc6d..542d9cb 100644
--- a/src/clj/clojure/core.clj
+++ b/src/clj/clojure/core.clj
@@ -4923,7 +4923,7 @@
   {:added "1.2"
    :static true}
   [& vars]
-  (every? #(.getThreadBinding ^clojure.lang.Var %) vars))
+  (every? #(.isSettable ^clojure.lang.Var %) vars))
 
 (defn make-hierarchy
   "Creates a hierarchy object for use with derive, isa? etc."
diff --git a/src/jvm/clojure/lang/Var.java b/src/jvm/clojure/lang/Var.java
index 1630889..c081232 100644
--- a/src/jvm/clojure/lang/Var.java
+++ b/src/jvm/clojure/lang/Var.java
@@ -388,6 +388,11 @@ public final TBox getThreadBinding(){
 	return null;
 }
 
+public final boolean isSettable() {
+        TBox b = getThreadBinding();
+        return b != null && b.thread == Thread.currentThread();
+}
+
 final public IFn fn(){
 	return (IFn) deref();
 }
-- 
1.7.9.5

