[PATCH] FileChannelImpl.c.Java_sun_nio_ch_FileChannelImpl_truncate0

Michael Allman msa at allman.ms
Wed Jan 30 06:30:14 UTC 2008


This must have been on somebody's plate for a long time.

Attached please find a patch to correct an apparently unreported bug.  At 
least, I couldn't find one.  The problem is that if a FileChannel is 
truncated and its position was previously set beyond the new length of the 
file, the position should be but isn't set to the new length of the file.

Heads up.  I have kinda sorta tested this patch.  I run a Mac OS X Leopard 
system.  I have tested this patch on that system, as applied to the 
soylatte source code repository.  More info on soylatte here: 
http://landonf.bikemonkey.org/static/soylatte/.  The gist of it is that 
soylatte is a port of Sun's JDK 6 to Mac OS X.  My test procedure was as 
follows:

1.  Get jdk7/jdk/test/java/nio/channels/FileChannel/Truncate.java from the 
OpenJDK repository.

2.  Compile and run Truncate on soylatte 1.0.1 (which is based on Sun's 
JDK 6 something).  Test reports failure as such:

Exception in thread "main" java.lang.RuntimeException: Position greater 
than size
 	at Truncate.main(Truncate.java:68)

3.  Run Truncate on a patched version of soylatte (patch essentially 
identical to attached file).  Test completes normally without output.  I 
guess this means it passed.

I'm sending this in as a patch to OpenJDK and not soylatte because I know 
this is a problem on Solaris, too.  That is, I ran Truncate on jdk6u4 on 
solaris 11 and it failed.

Obviously, this is not the only way to fix this problem.  We could also do 
this with a patch to FileChannelImpl.java.  I'll let whoever's in charge 
here make that call.

So, I hope this is helpful.  I am ready and willing to respond to 
feedback.  I have tried to follow the guidelines in 
http://openjdk.java.net/contribute/.

Cheers,

Michael

(CCing Landon Fuller because he runs the Soylatte project.)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: truncate.patch
Type: text/x-diff
Size: 1406 bytes
Desc: 
URL: <http://mail.openjdk.java.net/pipermail/core-libs-dev/attachments/20080129/56383b28/truncate.patch>


More information about the core-libs-dev mailing list