Hi!
Beginning with this ChangeLog entry (snipped):
2006-09-16 Casey Marshall <[EMAIL PROTECTED]>
* gnu/java/nio/FileChannelImpl.java: moved from
gnu/java/nio/channels/FileChannelImpl.java.
* gnu/java/nio/channels/FileChannelImpl.java: removed.
* native/jni/java-nio/gnu_java_nio_VMChannel.c
(Java_gnu_java_nio_VMChannel_lock): new function.
there have been locking problems when starting eclipse (i386).
The reason is that the check for MAX_LONG in
Java_gnu_java_nio_channels_FileChannelImpl_lock
has not been carried over to
Java_gnu_java_nio_VMChannel_lock
so the MAX_LONG value is cast to (off_t) and becomes -1 on this
architecture. The attached patch fixes this case. It is still
not safe for len > signed 32 bit.
-Edwin
? DIFF
? LOG
? cscope.out
? lock.patch
? lib/.gdb_history
? lib/vmlogignore.idx
? lib/vmlogignore.str
? lib/vmlogignore.txt
? native/target/Makefile
? native/target/Makefile.in
? native/target/Linux/Makefile
? native/target/Linux/Makefile.in
? native/target/generic/Makefile
? native/target/generic/Makefile.in
? tools/jarsigner.sh
? tools/keytool.sh
Index: native/jni/java-nio/gnu_java_nio_VMChannel.c
===================================================================
RCS file:
/sources/classpath/classpath/native/jni/java-nio/gnu_java_nio_VMChannel.c,v
retrieving revision 1.4
diff -u -p -r1.4 gnu_java_nio_VMChannel.c
--- native/jni/java-nio/gnu_java_nio_VMChannel.c 17 Sep 2006 22:49:52
-0000 1.4
+++ native/jni/java-nio/gnu_java_nio_VMChannel.c 10 Oct 2006 18:01:01
-0000
@@ -1582,7 +1582,11 @@ Java_gnu_java_nio_VMChannel_lock (JNIEnv
struct flock fl;
fl.l_start = (off_t) pos;
- fl.l_len = (off_t) len;
+ /* Long.MAX_VALUE means lock everything possible starting at pos. */
+ if (len == 9223372036854775807LL)
+ fl.l_len = 0;
+ else
+ fl.l_len = (off_t) len;
fl.l_pid = getpid ();
fl.l_type = (shared ? F_RDLCK : F_WRLCK);
fl.l_whence = SEEK_SET;