On 1/26/2013 9:14 AM, Martin Buchholz wrote:
On Tue, Jan 15, 2013 at 5:41 PM, Kumar Srinivasan
<kumar.x.sriniva...@oracle.com <mailto:kumar.x.sriniva...@oracle.com>>
wrote:
You changed calls to open to do this:
if ((fd = open(jarfile, O_RDONLY
#ifdef O_LARGEFILE
| O_LARGEFILE /* large file mode on solaris */
#endif
#ifdef O_BINARY
| O_BINARY /* use binary mode on windows */
#endif
)) == -1)
But this is not done consistently - there are 2 other calls to
open in
the same file that didn't get the LARGEFILE treatment. Why isn't
there a JLI_Open?
Maybe if you had reviewed my code changes, you would've caught
this. :)
I will look into it, maybe time for a JLI_Open as you suggested.
Following up on this, I have a simple webrev:
http://cr.openjdk.java.net/~martin/webrevs/openjdk8/LARGEFILE/
<http://cr.openjdk.java.net/%7Emartin/webrevs/openjdk8/LARGEFILE/>
with an "obviously correct" fix. However:
- we need a bug filed
- This change is completely untested. I no longer have access to
native 32-bit systems where this bug might be manifested. I have not
tried to actually provoke a failure, although it should not be too
hard to create a 3GB jar file with the contents of interest at the
end, on a system where off_t is signed 32-bit.
- As we discussed, it might be better to have a JLI_Open (or even
better, common C-level infrastructure for the whole project) but only
you guys have access to the variety of systems to write and test such
a thing, even if it is just a few lines of code.
So next step here is up to you.
To be perfectly honest, I am swamped right now, I will try to fit this in.
Sherman if you have cycles then go for it, I will help as needed.
Kumar