On Tue, Jan 15, 2013 at 5:41 PM, Kumar Srinivasan < 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/ 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.