summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-03-23 11:59:09 -0700
committerPaul Phillips <paulp@improving.org>2013-03-23 11:59:09 -0700
commitc8cd187b8ea5cef1fad6f42f4f276e19c99b317e (patch)
treefc315993579ef022fbc56f3e8af11a86cb7418c6 /src/compiler
parent3468b2a2b00f4c5e6912174cf35fa024ef9a8520 (diff)
parent6c48941f0961a17647a6c95022d13fef3ab1f956 (diff)
downloadscala-c8cd187b8ea5cef1fad6f42f4f276e19c99b317e.tar.gz
scala-c8cd187b8ea5cef1fad6f42f4f276e19c99b317e.tar.bz2
scala-c8cd187b8ea5cef1fad6f42f4f276e19c99b317e.zip
Merge pull request #2265 from rjolly/scripting9
script engine : better binding mechanism + reflexive access through bound variable "engine"
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/util/AbstractFileClassLoader.scala10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/util/AbstractFileClassLoader.scala b/src/compiler/scala/tools/nsc/util/AbstractFileClassLoader.scala
index e4f879560c..b204c39e9c 100644
--- a/src/compiler/scala/tools/nsc/util/AbstractFileClassLoader.scala
+++ b/src/compiler/scala/tools/nsc/util/AbstractFileClassLoader.scala
@@ -8,7 +8,6 @@ package util
import scala.tools.nsc.io.AbstractFile
import java.security.cert.Certificate
import java.security.{ ProtectionDomain, CodeSource }
-import util.ScalaClassLoader
import java.net.{ URL, URLConnection, URLStreamHandler }
import scala.collection.{ mutable, immutable }
@@ -91,10 +90,13 @@ class AbstractFileClassLoader(val root: AbstractFile, parent: ClassLoader)
lazy val protectionDomain = {
val cl = Thread.currentThread().getContextClassLoader()
val resource = cl.getResource("scala/runtime/package.class")
- if (resource == null) null else {
+ if (resource == null || resource.getProtocol != "jar") null else {
val s = resource.getPath
- val path = s.substring(0, s.lastIndexOf('!'))
- new ProtectionDomain(new CodeSource(new URL(path), null.asInstanceOf[Array[Certificate]]), null, this, null)
+ val n = s.lastIndexOf('!')
+ if (n < 0) null else {
+ val path = s.substring(0, n)
+ new ProtectionDomain(new CodeSource(new URL(path), null.asInstanceOf[Array[Certificate]]), null, this, null)
+ }
}
}