PatchSet 5201 
Date: 2004/09/21 20:22:23
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Fixed RandomAccessfile regressions

2004-09-21  Noa Resare  <[EMAIL PROTECTED]>

        * libraries/clib/nio/FileChannelImpl.c
        (Java_gnu_java_nio_channels_FileChannelImpl_implTruncate):
        seek to new end of file when truncating the file (mirrors classpath)

Members: 
        ChangeLog:1.2756->1.2757 
        libraries/clib/nio/FileChannelImpl.c:1.6->1.7 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2756 kaffe/ChangeLog:1.2757
--- kaffe/ChangeLog:1.2756      Tue Sep 21 16:27:03 2004
+++ kaffe/ChangeLog     Tue Sep 21 20:22:23 2004
@@ -1,3 +1,9 @@
+2004-09-21  Noa Resare  <[EMAIL PROTECTED]>
+
+       * libraries/clib/nio/FileChannelImpl.c
+       (Java_gnu_java_nio_channels_FileChannelImpl_implTruncate):
+       seek to new end of file when truncating the file (mirrors classpath)
+
 2004-09-21  Dalibor Topic  <[EMAIL PROTECTED]>
 
        * libraries/javalib/Makefile.am,
Index: kaffe/libraries/clib/nio/FileChannelImpl.c
diff -u kaffe/libraries/clib/nio/FileChannelImpl.c:1.6 
kaffe/libraries/clib/nio/FileChannelImpl.c:1.7
--- kaffe/libraries/clib/nio/FileChannelImpl.c:1.6      Sun May 30 16:30:49 2004
+++ kaffe/libraries/clib/nio/FileChannelImpl.c  Tue Sep 21 20:22:25 2004
@@ -230,6 +230,7 @@
   int nativeFd = (int) getFD(env, filechannel);
   off_t fileSize;
   off_t new_length = (off_t)newSize;
+  off_t cur, oldPosition;
   int rc;
 
   rc = getFileSize(nativeFd, &fileSize);
@@ -241,6 +242,25 @@
   
   if (new_length < fileSize)
     {
+      /* Get the old file position */
+      rc = KLSEEK(nativeFd, 0, SEEK_CUR, &oldPosition);
+      if (rc != 0)
+        {
+          throwIOException(env, rc);
+          return;
+        }
+
+      if (oldPosition > new_length)
+       {
+         /* Go to eof */
+         rc = KLSEEK(nativeFd, new_length, SEEK_SET, &cur);
+         if (rc != 0)
+         {
+           throwIOException(env, rc);
+           return;
+         }
+        }
+
       rc = KFTRUNCATE(nativeFd, new_length);
       if (rc != 0)
        {
@@ -250,8 +270,6 @@
     }
   else
     {
-      off_t cur;
-      off_t oldPosition;
       char data = 0;
       ssize_t ret;
       

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to