# Monday, 21 August 2006
« Breaking Changes | Main | New Snapshot »
New Snapshot

I fixed an ikvmstub regression introduced in the previous snapshot and fixed AssemblyClassLoader.getPackage[s]. I did some class file fuzzing and fixed most differences between JDK 1.5 and IKVM (most are trivial and only fixed to reduce the noise in the fuzz differences, but I also found a couple of real bugs).

Other changes:

  • Fixed runtime class loading to handle class loaders that return null or the wrong class.
  • Fixed Constructor to prevent instantiating Enum objects.
  • Fixed ikvmc not to stop with error when encountering invalid .class files. Also, when it encounters a .class file in a zip or jar that does not start with the Java class magic value it will include the .class file as a resource.
  • Improved ikvmc warnings about invalid classes to include the filename.
  • Fixed class file parser to correctly check the class file minor version.
  • Fixed field and method name validation in class file parser.
  • Fixed class file parser to check length of Deprecated attribute.
  • Fixed class file parser to check length of InnerClasses attribute when class file version is >= 49.
  • Fixed class file parser to always validate NameAndType constant pool entries.
  • Fixed class file parser to check for maximum method size of 65535 instead of 65536.
  • Fixed class file parser to check some properties of exception handler tables (instead of doing that at verification time).
  • Fixed reflection (Class.getDeclaredMethods) to throw ClassFormatError or VerifyError.
  • Fixed handling of inner class modifier flags to always use the flags from the inner classes attribute, except for the accessibility flags.
  • Fixed verifier/compiler to emit methods that throw ClassFormatError, instead of only VerifyError.
  • Fixed verifier to disallow exception handlers starting at bytecode offset zero.
  • Fixed verifier to better check invokeinterface.

Source is in cvs. Binaries: ikvmbin-0.31.2424.zip

Monday, 21 August 2006 07:24:22 (W. Europe Daylight Time, UTC+02:00)  #    Comments [1]