diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index eb7bcca2..f046e116 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -2947,8 +2947,22 @@ private static Expr analyzeSeq(C context, ISeq form, String name) throws Excepti } public static Object eval(Object form) throws Exception{ - Expr expr = analyze(C.EVAL, form); - return expr.eval(); + boolean createdLoader = false; + try + { + if(!LOADER.isBound()) + { + Var.pushThreadBindings(RT.map(LOADER, new DynamicClassLoader())); + createdLoader = true; + } + Expr expr = analyze(C.EVAL, form); + return expr.eval(); + } + finally + { + if(createdLoader) + Var.popThreadBindings(); + } } private static KeywordExpr registerKeyword(Keyword keyword){ |