Uploaded image for project: 'Harmony'
  1. Harmony
  2. HARMONY-6346

[classlib] [archive] Several archive bugfixes and optimizations

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 5.0M12
    • Component/s: Classlib
    • Labels:
      None
    • Environment:
      SVN Revision: 820775
    • Patch Info:
      Patch Available
    • Estimated Complexity:
      Advanced

      Description

      The attached patch includes several miscellaneous bugfixes, optimizations and simplifications that we created for Android's copy of the archive module. Here's an overview of what's changed:

      InflaterInputStream
      Removes a bogus magic number check. Previously I submitted a patch to get this check to work; but the whole premise is flawed. To demonstrate, attempt to inflate data that was deflated using non-default settings.

      InflaterInputStream, ZipInputStream, GZIPInputStream
      These now make sure that available() returns 0 when the end of the stream is reached. Previously available() could return 1 even if read() was guaranteed to return -1.

      GZIPOutputStream
      Slight performance fix: cast from long to int only once

      JarFile
      Verifies the entry when the last byte is returned. This is similar to the available() problem in ZipInputStream etc.
      Move getMetaEntriesImpl() from native to Java.

      ZipFile
      Limit the amount of memory used while reading files. Previously we would create arbitrarily large buffers.
      Move several methods from native to Java.

      MsgHelp
      Keep resource bundles in memory with soft references
      Use the system classloader always.

      Tests
      New tests to demonstrate problems above, recovery on broken manifests, verification of empty entries

      Note that there are some problems with the patch, so it should not be applied! I will to upload an improved patch early next week. I figured I'd let everyone preview the patch in its current state; the problems are minor and include removing dead code and fixing tests with invalid assumptions.

        Attachments

        1. EmptyEntries_signed.jar
          2 kB
          Jesse Wilson
        2. archive_from_android.patch
          121 kB
          Jesse Wilson
        3. archive_from_android_2.patch
          146 kB
          Jesse Wilson

          Activity

            People

            • Assignee:
              tellison Tim Ellison
              Reporter:
              jessewilson Jesse Wilson
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 48h
                48h
                Remaining:
                Remaining Estimate - 48h
                48h
                Logged:
                Time Spent - Not Specified
                Not Specified