aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2002-01-18 17:23:23 +0000
committerTom Tromey <tromey@gcc.gnu.org>2002-01-18 17:23:23 +0000
commit80d1ee91f931a34113d7dff2154798f31fa6d74b (patch)
treeff69a21f6d83fedc7ec7c083f312376984477290 /libjava
parent072f20ef713af09c2c2f2cb82e41f98a963a3269 (diff)
downloadgcc-80d1ee91f931a34113d7dff2154798f31fa6d74b.zip
gcc-80d1ee91f931a34113d7dff2154798f31fa6d74b.tar.gz
gcc-80d1ee91f931a34113d7dff2154798f31fa6d74b.tar.bz2
natPlainSocketImpl.cc: Include IllegalArgumentException.h.
* java/net/natPlainSocketImpl.cc: Include IllegalArgumentException.h. (_Jv_recv): New template function. (BooleanClass): Removed. (read): Use _Jv_recv. (setOption): Use Boolean::class$. Throw exception if object is not Boolean or Integer. From-SVN: r48992
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog10
-rw-r--r--libjava/java/net/natPlainSocketImpl.cc24
2 files changed, 28 insertions, 6 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 4dece51..459d3cd 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,13 @@
+2002-01-18 Tom Tromey <tromey@redhat.com>
+
+ * java/net/natPlainSocketImpl.cc: Include
+ IllegalArgumentException.h.
+ (_Jv_recv): New template function.
+ (BooleanClass): Removed.
+ (read): Use _Jv_recv.
+ (setOption): Use Boolean::class$. Throw exception if object is
+ not Boolean or Integer.
+
2002-01-17 Tom Tromey <tromey@redhat.com>
* java/awt/MenuComponent.java: Merged with Classpath.
diff --git a/libjava/java/net/natPlainSocketImpl.cc b/libjava/java/net/natPlainSocketImpl.cc
index cc8dca1..ca294d2 100644
--- a/libjava/java/net/natPlainSocketImpl.cc
+++ b/libjava/java/net/natPlainSocketImpl.cc
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000 , 2002 Free Software Foundation
+/* Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation
This file is part of libgcj.
@@ -70,6 +70,15 @@ _Jv_accept (int fd, struct sockaddr *addr, socklen_t *addrlen)
#undef accept
#endif
+// A wrapper for recv so we don't have to do configure tests.
+template <typename T_fd, typename T_buf, typename T_len, typename T_flags>
+static inline int
+_Jv_recv (int (*recv_func) (T_fd s, T_buf buf, T_len len, T_flags flags),
+ int s, void *buf, size_t len, int flags)
+{
+ return recv_func ((T_fd) s, (T_buf) buf, (T_len) len, (T_flags) flags);
+}
+
#include <gcj/cni.h>
#include <gcj/javaprims.h>
#include <java/io/IOException.h>
@@ -88,8 +97,7 @@ _Jv_accept (int fd, struct sockaddr *addr, socklen_t *addrlen)
#include <java/lang/Thread.h>
#include <java/lang/NullPointerException.h>
#include <java/lang/ArrayIndexOutOfBoundsException.h>
-
-#define BooleanClass java::lang::Boolean::class$
+#include <java/lang/IllegalArgumentException.h>
#ifdef DISABLE_JAVA_NET
@@ -497,7 +505,7 @@ java::net::PlainSocketImpl::read(jbyteArray buffer, jint offset, jint count)
}
}
// Read the socket.
- int r = ::recv (fnum, bytes, count, 0);
+ int r = _Jv_recv (::recv, fnum, (void *) bytes, count, 0);
if (r == 0)
return -1;
if (java::lang::Thread::interrupted())
@@ -584,7 +592,7 @@ java::net::PlainSocketImpl::setOption (jint optID, java::lang::Object *value)
int val;
socklen_t val_len = sizeof (val);
- if (_Jv_IsInstanceOf (value, &BooleanClass))
+ if (_Jv_IsInstanceOf (value, &java::lang::Boolean::class$))
{
java::lang::Boolean *boolobj =
static_cast<java::lang::Boolean *> (value);
@@ -598,12 +606,16 @@ java::net::PlainSocketImpl::setOption (jint optID, java::lang::Object *value)
val = 0;
}
}
- else // assume value is an Integer
+ else if (_Jv_IsInstanceOf (value, &java::lang::Integer::class$))
{
java::lang::Integer *intobj =
static_cast<java::lang::Integer *> (value);
val = (int) intobj->intValue();
}
+ else
+ {
+ throw new java::lang::IllegalArgumentException (JvNewStringLatin1 ("`value' must be Boolean or Integer"));
+ }
switch (optID)
{