aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/nio/FloatBuffer.java
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2004-05-04 21:31:30 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2004-05-04 21:31:30 +0000
commit933522fbc3340705007b00b7ac3734db7002a8c7 (patch)
tree7281d10d42a1f2c51d91d3923158d74d7a9511ff /libjava/java/nio/FloatBuffer.java
parent6c89c39a4880297da031f52ade9b839c6e73ef48 (diff)
downloadgcc-933522fbc3340705007b00b7ac3734db7002a8c7.zip
gcc-933522fbc3340705007b00b7ac3734db7002a8c7.tar.gz
gcc-933522fbc3340705007b00b7ac3734db7002a8c7.tar.bz2
2004-05-04 Michael Koch <konqueror@gmx.de>
* java/nio/ByteBuffer.java, java/nio/CharBuffer.java, java/nio/DoubleBuffer.java, java/nio/FloatBuffer.java, java/nio/IntBuffer.java, java/nio/LongBuffer.java, java/nio/ShortBuffer.java: (compareTo): Fixed bogus implementation in all buffer classes. From-SVN: r81489
Diffstat (limited to 'libjava/java/nio/FloatBuffer.java')
-rw-r--r--libjava/java/nio/FloatBuffer.java43
1 files changed, 19 insertions, 24 deletions
diff --git a/libjava/java/nio/FloatBuffer.java b/libjava/java/nio/FloatBuffer.java
index 0c7b04d..ab87b7f 100644
--- a/libjava/java/nio/FloatBuffer.java
+++ b/libjava/java/nio/FloatBuffer.java
@@ -1,5 +1,5 @@
/* FloatBuffer.java --
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -265,32 +265,27 @@ public abstract class FloatBuffer extends Buffer
*/
public int compareTo (Object obj)
{
- FloatBuffer a = (FloatBuffer) obj;
+ FloatBuffer other = (FloatBuffer) obj;
- if (a.remaining () != remaining ())
- return 1;
-
- if (! hasArray () ||
- ! a.hasArray ())
- {
- return 1;
- }
-
- int r = remaining ();
- int i1 = position ();
- int i2 = a.position ();
-
- for (int i = 0; i < r; i++)
+ int num = Math.min(remaining(), other.remaining());
+ int pos_this = position();
+ int pos_other = other.position();
+
+ for (int count = 0; count < num; count++)
{
- int t = (int) (get (i1) - a.get (i2));
-
- if (t != 0)
- {
- return (int) t;
- }
+ float a = get(pos_this++);
+ float b = other.get(pos_other++);
+
+ if (a == b)
+ continue;
+
+ if (a < b)
+ return -1;
+
+ return 1;
}
-
- return 0;
+
+ return remaining() - other.remaining();
}
/**