classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cp-patches] Re: FYI: Some more net regression fixes


From: Mark Wielaard
Subject: [cp-patches] Re: FYI: Some more net regression fixes
Date: Thu, 12 Jan 2006 12:56:15 +0100

On Thu, 2006-01-12 at 11:35 +0100, Mark Wielaard wrote:
> There are only 2 regressions left which I still need to investigate:
> 
> -PASS: gnu.testlet.java.net.DatagramPacket.DatagramPacketReceive2:
> DatagramPacket receive Test B errorCount=0 (number 1)
> +FAIL: gnu.testlet.java.net.DatagramPacket.DatagramPacketReceive2:
> DatagramPacket receive Test B errorCount=15 (number 1)

Found this one. DatagramPacket has a getLength() method that should be
used to determine how much bytes we want.

2006-01-12  Mark Wielaard  <address@hidden>

    * vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java
    (receive): Use packet.getLength().
    * native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c
    (nativeReceive): Check whether the receiver wants zero bytes.

It also accounts for the somewhat strange situation where someone
explicitly doesn't want to receive no bytes (although I am not sure that
actually happens in real code, it looks like something that only happens
in regression suites).

> -PASS: gnu.testlet.java.net.DatagramSocket.DatagramSocketTest2:
> invalid_send_addr (number 2)
> +FAIL: gnu.testlet.java.net.DatagramSocket.DatagramSocketTest2:
> invalid_send_addr: test 2 - Should NOT throw IOException (number 1)

This is another stupid corner case that I am not fixing for now. The
test explicitly gives a null address and expects a NullPointerException,
but gets an IOException.

Cheers,

Mark
Index: native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c
===================================================================
RCS file: 
/cvsroot/classpath/classpath/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c,v
retrieving revision 1.4
diff -u -r1.4 gnu_java_net_VMPlainDatagramSocketImpl.c
--- native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c        12 Jan 
2006 09:37:31 -0000      1.4
+++ native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c        12 Jan 
2006 11:55:39 -0000
@@ -211,6 +211,12 @@
   /* Receive the packet */
   /* should we try some sort of validation on the length? */
   (*bytes_read) = _javanet_recvfrom(env, obj, arr, offset, length, &addr, 
port);
+
+  /* Special case the strange situation where the receiver didn't want any
+     bytes. */
+  if (length == 0 && (*bytes_read) == -1)
+    *bytes_read = 0;
+
   if ((*bytes_read) == -1)
     {
       (*env)->ReleaseIntArrayElements(env, receivedFromPort, (jint*)port, 0);
Index: vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java,v
retrieving revision 1.1
diff -u -r1.1 VMPlainDatagramSocketImpl.java
--- vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java    4 Jan 2006 
20:46:47 -0000       1.1
+++ vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java    12 Jan 2006 
11:55:39 -0000
@@ -155,7 +155,7 @@
     int[] receivedLength = new int[1];
 
     nativeReceive(socket, packet.getData(), packet.getOffset(),
-                  packet.getData().length - packet.getOffset(),
+                  packet.getLength(),
                   receiveFromAddress, receiveFromPort, receivedLength);
 
     packet.setAddress(InetAddress.getByAddress(receiveFromAddress));

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]