You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Vladimir Ivanov (JIRA)" <ji...@apache.org> on 2006/07/07 12:50:30 UTC
[jira] Created: (HARMONY-802) [classlib][nio]
java.nio.ByteBuffer.compareTo( ByteBuffer) returns wrong value
[classlib][nio] java.nio.ByteBuffer.compareTo( ByteBuffer) returns wrong value
------------------------------------------------------------------------------
Key: HARMONY-802
URL: http://issues.apache.org/jira/browse/HARMONY-802
Project: Harmony
Type: Bug
Components: Classlib
Reporter: Vladimir Ivanov
Method must return: "A negative integer, zero, or a positive integer as this buffer is less than, equal to, or greater than the given buffer".
But in the Harmony implementation the ByteBuffer.allocateDirect() and ByteBuffer.wrap(new byte[]) does not equals due to different initialization symbols (it is easy to catch if add debug message to the ByteBuffer.compareTo() method).
===================== test.java =======================
import java.nio.*;
public class test {
public static void main (String[] args) {
try {
System.out.println(ByteBuffer.wrap(new byte[839]).compareTo(ByteBuffer.allocateDirect(137)));
} catch (Exception e) {
e.printStackTrace();
}
}
}
===================================================
Output:
C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -showversion test
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System optimized over throughput (initial strategy singleparpar))
702
C:\tmp\tmp17>C:\harmony\trunk_0427\deploy\jdk\jre\bin\java.exe -showversion test
java version 1.5 (subset)
(c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
thisByte = 0, otherByte = 31
-1
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Closed: (HARMONY-802) [classlib][nio]
java.nio.ByteBuffer.compareTo( ByteBuffer) returns wrong value
Posted by "Tim Ellison (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-802?page=all ]
Tim Ellison closed HARMONY-802:
-------------------------------
Verified by Vladimir.
> [classlib][nio] java.nio.ByteBuffer.compareTo( ByteBuffer) returns wrong value
> ------------------------------------------------------------------------------
>
> Key: HARMONY-802
> URL: http://issues.apache.org/jira/browse/HARMONY-802
> Project: Harmony
> Type: Bug
> Components: Classlib
> Reporter: Vladimir Ivanov
> Assignee: Tim Ellison
> Attachments: ByteBufferTest.patch, PlatformAddress.patch
>
> Method must return: "A negative integer, zero, or a positive integer as this buffer is less than, equal to, or greater than the given buffer".
> But in the Harmony implementation the ByteBuffer.allocateDirect() and ByteBuffer.wrap(new byte[]) does not equals due to different initialization symbols (it is easy to catch if add debug message to the ByteBuffer.compareTo() method).
> ===================== test.java =======================
> import java.nio.*;
> public class test {
> public static void main (String[] args) {
> try {
> System.out.println(ByteBuffer.wrap(new byte[839]).compareTo(ByteBuffer.allocateDirect(137)));
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> }
> ===================================================
> Output:
> C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -showversion test
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System optimized over throughput (initial strategy singleparpar))
> 702
> C:\tmp\tmp17>C:\harmony\trunk_0427\deploy\jdk\jre\bin\java.exe -showversion test
> java version 1.5 (subset)
> (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> thisByte = 0, otherByte = 31
> -1
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Assigned: (HARMONY-802) [classlib][nio]
java.nio.ByteBuffer.compareTo( ByteBuffer) returns wrong value
Posted by "Tim Ellison (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-802?page=all ]
Tim Ellison reassigned HARMONY-802:
-----------------------------------
Assign To: Tim Ellison
> [classlib][nio] java.nio.ByteBuffer.compareTo( ByteBuffer) returns wrong value
> ------------------------------------------------------------------------------
>
> Key: HARMONY-802
> URL: http://issues.apache.org/jira/browse/HARMONY-802
> Project: Harmony
> Type: Bug
> Components: Classlib
> Reporter: Vladimir Ivanov
> Assignee: Tim Ellison
> Attachments: ByteBufferTest.patch, PlatformAddress.patch
>
> Method must return: "A negative integer, zero, or a positive integer as this buffer is less than, equal to, or greater than the given buffer".
> But in the Harmony implementation the ByteBuffer.allocateDirect() and ByteBuffer.wrap(new byte[]) does not equals due to different initialization symbols (it is easy to catch if add debug message to the ByteBuffer.compareTo() method).
> ===================== test.java =======================
> import java.nio.*;
> public class test {
> public static void main (String[] args) {
> try {
> System.out.println(ByteBuffer.wrap(new byte[839]).compareTo(ByteBuffer.allocateDirect(137)));
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> }
> ===================================================
> Output:
> C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -showversion test
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System optimized over throughput (initial strategy singleparpar))
> 702
> C:\tmp\tmp17>C:\harmony\trunk_0427\deploy\jdk\jre\bin\java.exe -showversion test
> java version 1.5 (subset)
> (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> thisByte = 0, otherByte = 31
> -1
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Commented: (HARMONY-802) [classlib][nio]
java.nio.ByteBuffer.compareTo( ByteBuffer) returns wrong value
Posted by "Vladimir Ivanov (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-802?page=comments#action_12419958 ]
Vladimir Ivanov commented on HARMONY-802:
-----------------------------------------
verified, thanks
> [classlib][nio] java.nio.ByteBuffer.compareTo( ByteBuffer) returns wrong value
> ------------------------------------------------------------------------------
>
> Key: HARMONY-802
> URL: http://issues.apache.org/jira/browse/HARMONY-802
> Project: Harmony
> Type: Bug
> Components: Classlib
> Reporter: Vladimir Ivanov
> Assignee: Tim Ellison
> Attachments: ByteBufferTest.patch, PlatformAddress.patch
>
> Method must return: "A negative integer, zero, or a positive integer as this buffer is less than, equal to, or greater than the given buffer".
> But in the Harmony implementation the ByteBuffer.allocateDirect() and ByteBuffer.wrap(new byte[]) does not equals due to different initialization symbols (it is easy to catch if add debug message to the ByteBuffer.compareTo() method).
> ===================== test.java =======================
> import java.nio.*;
> public class test {
> public static void main (String[] args) {
> try {
> System.out.println(ByteBuffer.wrap(new byte[839]).compareTo(ByteBuffer.allocateDirect(137)));
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> }
> ===================================================
> Output:
> C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -showversion test
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System optimized over throughput (initial strategy singleparpar))
> 702
> C:\tmp\tmp17>C:\harmony\trunk_0427\deploy\jdk\jre\bin\java.exe -showversion test
> java version 1.5 (subset)
> (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> thisByte = 0, otherByte = 31
> -1
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Updated: (HARMONY-802) [classlib][nio]
java.nio.ByteBuffer.compareTo( ByteBuffer) returns wrong value
Posted by "Vladimir Ivanov (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-802?page=all ]
Vladimir Ivanov updated HARMONY-802:
------------------------------------
Attachment: ByteBufferTest.patch
PlatformAddress.patch
unit test and patch
> [classlib][nio] java.nio.ByteBuffer.compareTo( ByteBuffer) returns wrong value
> ------------------------------------------------------------------------------
>
> Key: HARMONY-802
> URL: http://issues.apache.org/jira/browse/HARMONY-802
> Project: Harmony
> Type: Bug
> Components: Classlib
> Reporter: Vladimir Ivanov
> Attachments: ByteBufferTest.patch, PlatformAddress.patch
>
> Method must return: "A negative integer, zero, or a positive integer as this buffer is less than, equal to, or greater than the given buffer".
> But in the Harmony implementation the ByteBuffer.allocateDirect() and ByteBuffer.wrap(new byte[]) does not equals due to different initialization symbols (it is easy to catch if add debug message to the ByteBuffer.compareTo() method).
> ===================== test.java =======================
> import java.nio.*;
> public class test {
> public static void main (String[] args) {
> try {
> System.out.println(ByteBuffer.wrap(new byte[839]).compareTo(ByteBuffer.allocateDirect(137)));
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> }
> ===================================================
> Output:
> C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -showversion test
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System optimized over throughput (initial strategy singleparpar))
> 702
> C:\tmp\tmp17>C:\harmony\trunk_0427\deploy\jdk\jre\bin\java.exe -showversion test
> java version 1.5 (subset)
> (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> thisByte = 0, otherByte = 31
> -1
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Resolved: (HARMONY-802) [classlib][nio]
java.nio.ByteBuffer.compareTo( ByteBuffer) returns wrong value
Posted by "Tim Ellison (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-802?page=all ]
Tim Ellison resolved HARMONY-802:
---------------------------------
Resolution: Fixed
Thanks Vladimir,
Your problem was fixed in NIO and LUNI modules at repo revision r419915.
I chose a slightly different way to fix the problem so that not all allocations via platform address have zeroed memory.
I did take your regression test, thank you.
Please check that the fix fully resolves your problem.
> [classlib][nio] java.nio.ByteBuffer.compareTo( ByteBuffer) returns wrong value
> ------------------------------------------------------------------------------
>
> Key: HARMONY-802
> URL: http://issues.apache.org/jira/browse/HARMONY-802
> Project: Harmony
> Type: Bug
> Components: Classlib
> Reporter: Vladimir Ivanov
> Assignee: Tim Ellison
> Attachments: ByteBufferTest.patch, PlatformAddress.patch
>
> Method must return: "A negative integer, zero, or a positive integer as this buffer is less than, equal to, or greater than the given buffer".
> But in the Harmony implementation the ByteBuffer.allocateDirect() and ByteBuffer.wrap(new byte[]) does not equals due to different initialization symbols (it is easy to catch if add debug message to the ByteBuffer.compareTo() method).
> ===================== test.java =======================
> import java.nio.*;
> public class test {
> public static void main (String[] args) {
> try {
> System.out.println(ByteBuffer.wrap(new byte[839]).compareTo(ByteBuffer.allocateDirect(137)));
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> }
> ===================================================
> Output:
> C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -showversion test
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System optimized over throughput (initial strategy singleparpar))
> 702
> C:\tmp\tmp17>C:\harmony\trunk_0427\deploy\jdk\jre\bin\java.exe -showversion test
> java version 1.5 (subset)
> (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> thisByte = 0, otherByte = 31
> -1
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira