There is a > 2/4G support issue we will need to address when using the
platform bundled zlib.

The total_in/total_out variables of z_stream_s is "long", which is not "big"
enough (32 bit) for ZIP64 support on a 32-bit platform. The zlib code
bundled with JDK has been updated to use "long long", as the (4)(5)(6)
in ChangeLog_java at

http://cr.openjdk.java.net/~sherman/7110149/webrev/src/share/native/java/util/zip/zlib-1.2.5/patches/ChangeLog_java.html

The Deflater/Inflater.getgetByteRead/Written() now use z_stream_s.total_in/out "directly", so it will not be able to report the correct totalRead/Written value if the value > 2G/4G, though it might be rare to deflate/inflate a >2/4G chunk
of data.

A possible solution is to accumulate the "totalRead/Written" at java level, so as long as you don't pass in data > 2g/4g in one invocation, it should be fine.

-Sherman


On 11/30/2011 02:09 AM, Chris Hegarty wrote:
On 30/11/2011 09:50, David Holmes wrote:
On 30/11/2011 7:43 PM, Alan Bateman wrote:
On 30/11/2011 01:31, Dr Andrew John Hughes wrote:
On 10:23 Tue 29 Nov , Alan Bateman wrote:

snip...

When we talked about the zlib version here (I think back in
February) we
talked about having the option to use the system's zip library where
appropriate. Have you given this any thought recently?

-Alan.
We have changes for this (and other libraries) in IcedTea that we'd like
to upstream. I'll look at posting a webrev soon.
That would be great. If I remember correctly then the IcedTea patches
remove the zlib code completely but we can't do that of course because
of Windows. So I think a USE_SYSTEM_ZLIB as you suggest would be best.

FYI the macosx port is also adding a SYSTEM_ZLIB option:

http://cr.openjdk.java.net/~michaelm/7113349/2/jdk7u-osx/modified/

So this is a compile time decision, if you are targeting a platform that is known to have a system zip library you simply link against that. Nice!

I've also been looking at the possibility ( for a different reason ) of using supporting the system version of a library (if one is available) instead of the bundled version. This is to allow support of more recent versions of the system library to be used, rather than what may be an older bundled version, and targets platforms where a system library may or may not be available.

Is this something that may be relevant here, or are we always guaranteed that the system will have a zip library available on our targeted OS-ARCH binaries?

-Chris.


David

-Alan.


Reply via email to