2006/7/25, Jimmy, Jing Lv <[EMAIL PROTECTED]>:
Hi:
I find another platform-dependent operation
FileChannel.transforFrom(ReadableByteChannel src, long position, long
count) in java.nio.channels. RI behaves differently if the given count
is larger than Integer.MAX_VALUE: on windows, it throws an IOException;
on Linux, it return zero silently. It is clear that the difference is
caused by system call. Unfortunately Harmony fails to behave like RI as
its has the same native code using the port-lib.
If it is necessary to make Harmony behaving exactly like RI, I
suggest writing native code for transforFrom. This may be a
waste-of-effect as it is nearly the same except for this little
difference.However, currently people have few chances to use a size
larger than Integer.MAX_VALUE(nearly 4G, is it?), and system call does
not support long value to pass in.
Another thing I'd like to mention is that it'll be great if we can
use testNG, or decide some other way to go. At least 2 testcases should
be written for different platform as I remember, including the one for
this problem. :)
--
Best Regards!
Jimmy, Jing Lv
China Software Development Lab, IBM
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Dear Jimmy:
As spec is not clear about how to deal with the argument greater
than Integer.MAX_VALUE, maybe we shall look more closely at what RI does and
how the system call behaves.
I think it will be a good idea to let native code or even system
call itself treat with such affairs, provided that Harmony will support some
64-bit platforms one day. Thus it may be not so wise to throw some
exception in java code if encountering the data longer than 32-bits.
Besides, whether we should behaves the same as RI, even if it is
different on different platforms? :)
--
Leo Li
China Software Development Lab, IBM