diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/clj/clojure/core.clj | 4 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Keyword.java | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj index 3f0408af..83297d20 100644 --- a/src/clj/clojure/core.clj +++ b/src/clj/clojure/core.clj @@ -559,7 +559,9 @@ exists. This function will not intern a new keyword. If the keyword has not already been interned, it will return nil. Do not use : in the keyword strings, it will be added automatically." - {:tag clojure.lang.Keyword} + {:tag clojure.lang.Keyword + :added "1.3" + :static true} ([name] (cond (keyword? name) name (symbol? name) (clojure.lang.Keyword/find ^clojure.lang.Symbol name) (string? name) (clojure.lang.Keyword/find ^String name))) diff --git a/src/jvm/clojure/lang/Keyword.java b/src/jvm/clojure/lang/Keyword.java index 743a25f1..2017a959 100644 --- a/src/jvm/clojure/lang/Keyword.java +++ b/src/jvm/clojure/lang/Keyword.java @@ -54,7 +54,11 @@ private Keyword(Symbol sym){ } public static Keyword find(Symbol sym){ - return table.get(sym).get(); + SoftReference<Keyword> ref = table.get(sym); + if (ref != null) + return ref.get(); + else + return null; } public static Keyword find(String ns, String name){ |