[kaffe] PlainDatagramSocketImpl patch

Nektarios K. Papadopoulos npapadop at inaccessnetworks.com
Mon Apr 11 04:33:51 PDT 2005


Hi all,

I was getting java.io.Exception: No such device
when calling java.net.MulticastSocket.joinGroup with valid arguments.

I've traced it down to PlainDatagramSocketImpl.c and found out that using 
unhand_object_array, ipm.imr_interface was filling garbages.

Changing unhand_object_array to unhand_array_array (see attached patch ) the 
problem went away.

BTW, looking at definition of unhand_object_array and unhand_array_array and the 
related structs HArrayOfObject and HArrayOfArray I'm not sure I understand the 
naming convention.

After patching PlainDatagramSocketImpl.c, unhand_object_array is not used 
anywhere and I think it's wrong anyway.


Cheers,
Nektarios
-------------- next part --------------
Index: libraries/clib/net/PlainDatagramSocketImpl.c
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/clib/net/PlainDatagramSocketImpl.c,v
retrieving revision 1.51
diff -u -r1.51 PlainDatagramSocketImpl.c
--- libraries/clib/net/PlainDatagramSocketImpl.c	21 Dec 2004 05:49:58 -0000	1.51
+++ libraries/clib/net/PlainDatagramSocketImpl.c	11 Apr 2005 11:08:52 -0000
@@ -634,7 +634,7 @@
 	if( jni && obj_length(unhand(unhand(jni)->inetAddresses)->elementData) != 0)
 	{
 	  struct Hjava_net_InetAddress* if_addr = (struct Hjava_net_InetAddress *)
-	    unhand_object_array(unhand(unhand(jni)->inetAddresses)->elementData);
+	    unhand_array_array(unhand(unhand(jni)->inetAddresses)->elementData)[0] ;
 	  
 	  memcpy(&ipm.imr_interface, unhand_byte_array(unhand(if_addr)->addr),
 	  	 sizeof(ipm.imr_interface));;
@@ -682,7 +682,7 @@
 	if( jni && obj_length(unhand(unhand(jni)->inetAddresses)->elementData) != 0)
 	{
 	        struct Hjava_net_InetAddress* if_addr = (struct Hjava_net_InetAddress *)
-		  unhand_object_array(unhand(unhand(jni)->inetAddresses)->elementData);
+		  unhand_array_array(unhand(unhand(jni)->inetAddresses)->elementData)[0];
 	  
 	  	memcpy(&ipm.imr_interface,
 		       unhand_byte_array(unhand(if_addr)->addr),


More information about the kaffe mailing list