diff options
author | jfrijters <jfrijters> | 2014-08-06 19:25:11 +0400 |
---|---|---|
committer | jfrijters <jfrijters> | 2014-08-06 19:25:11 +0400 |
commit | 6eabab15b884d813755322f57978d10d0c8948cf (patch) | |
tree | 36ab6384a3ef80ae44b12ac4d556aafe203ca47d | |
parent | 3fd851ee4a0eb998c3948a7dd3149d2a824ecfe2 (diff) |
Bug fix. When reading a .class resource from an assembly (to attempt to dynamically define it), read all the bytes.
-rw-r--r-- | runtime/AssemblyClassLoader.cs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/runtime/AssemblyClassLoader.cs b/runtime/AssemblyClassLoader.cs index 5560ad59..09653c73 100644 --- a/runtime/AssemblyClassLoader.cs +++ b/runtime/AssemblyClassLoader.cs @@ -746,7 +746,15 @@ namespace IKVM.Internal using (java.io.InputStream inp = url.openStream()) { byte[] buf = new byte[inp.available()]; - inp.read(buf, 0, buf.Length); + for (int pos = 0; pos < buf.Length; ) + { + int read = inp.read(buf, pos, buf.Length - pos); + if (read <= 0) + { + break; + } + pos += read; + } return TypeWrapper.FromClass(Java_java_lang_ClassLoader.defineClass1(GetJavaClassLoader(), name, buf, 0, buf.Length, GetProtectionDomain(), null)); } } |