Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4449054

java.nio.FileChannel.transferFrom() transfers data even when position > size()

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P2 P2
    • 1.4.0
    • 1.4.0
    • core-libs
    • beta
    • sparc
    • solaris_7
    • Verified

      Per spec: "If the given position is greater than the file's current size, then no bytes are transferred"

      However, the constraint does not hold.

      ------- test code FCtransferFrom.java: xferTest03()

      // make sure no data is transfered when 'position' parameter
      // passed to transferFrom() is more than file channel size.

      System.out.println("BEFORE:fc1.position=" + fc1.position() + ", fc1.size=" + fc1.size() + ", srcData.length=" + srcData.length);
      System.out.println("BEFORE:fc2.position=" + fc2.position() + ", fc2.size=" + fc2.size());

      bytesWritten = fc2.transferFrom(fc1, fc2.size() + 1, srcData.length);

      System.out.println("AFTER:fc2.position=" + fc2.position() + ", fc2.size=" + fc2.size() + ", bytesWritten=" + bytesWritten);

      if (bytesWritten != 0) {
      return TestHelper.testFail(testName +
      " FAIL: bytesWritten: expected=0, actual=" + bytesWritten);
      }

      ------- results ------------------
      BEFORE:fc1.position=0, fc1.size=5334, srcData.length=5334
      BEFORE:fc2.position=0, fc2.size=0
      AFTER:fc2.position=0, fc2.size=5335, bytesWritten=5334
      TestFailException: xferTest03 FAIL: bytesWritten: expected=0, actual=5334
              at TestHelper.testFail(TestHelper.java:70)
              at FCtransferFrom.xferTest03(FCtransferFrom.java:325)
      :
      :
      ------------------------
      build 1.4.0-beta-b61

            mmcclosksunw Michael Mccloskey (Inactive)
            hvilekar Harshad Vilekar (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: