I don't think the fix is complete. The patch only fixed reported bug, but
introduces new severe bugs.

Because fd would never be initialized after applying the patch. Running all
tests would also fail with crash.

After deleting initialization code in SocketImpl.java, we have to initialize
SocketImpl.fd elsewhere. I suggest add the code into
PlainSocketImpl.createmethod.  Am I right?

If no one objects, I'll apply a patch to fix this jira. Thanks!

On 8/9/06, Igor V. Stolyarov (JIRA) <[EMAIL PROTECTED]> wrote:

    [ http://issues.apache.org/jira/browse/HARMONY-1117?page=all ]

Igor V. Stolyarov updated HARMONY-1117:
---------------------------------------

   Attachment: Harmony-1117.patch

Fix attached

> [classlib][net] Harmony implementation of SocketImpl.getFileDescriptor()
return real object, but RI return null
>
---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1117
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1117
>             Project: Harmony
>          Issue Type: Bug
>            Reporter: Igor V. Stolyarov
>         Attachments: Harmony-1117.patch
>
>
>  Harmony implementation of SocketImpl.getFileDescriptor() return real
object, but RI return null
>
Test---------------------------------------------------------------------------------------------------
> import java.io.*;
> import java.net.*;
> public class Test {
>     public static void main(String[] args) {
>        try {
>             TestSocketImpl testSocketImpl = new TestSocketImpl();
>             System.out.println("res="+testSocketImpl.getFileDescriptor()
);
>        } catch (Exception e) {
>            e.printStackTrace();
>        }
>     }
> }
> class TestSocketImpl extends SocketImpl {
>     public FileDescriptor getFileDescriptor(){
>         return super.getFileDescriptor();
>     }
>     protected void create(boolean arg0) throws IOException {}
>     protected void connect(String arg0, int arg1) throws IOException {}
>     protected void connect(InetAddress arg0, int arg1) throws
IOException {}
>     protected void connect(SocketAddress arg0, int arg1) throws
IOException {}
>     protected void bind(InetAddress arg0, int arg1) throws IOException{}
>     protected void listen(int arg0) throws IOException {}
>     protected void accept(SocketImpl arg0) throws IOException {}
>     protected InputStream getInputStream() throws IOException {
>         return null;
>     }
>     protected OutputStream getOutputStream() throws IOException {
>         return null;
>     }
>     protected int available() throws IOException {
>         return 0;
>     }
>     protected void close() throws IOException {}
>     protected void sendUrgentData(int arg0) throws IOException {}
>     public void setOption(int arg0, Object arg1) throws
SocketException{}
>     public Object getOption(int arg0) throws SocketException {
>         return null;
>     }
> }
>
Output------------------------------------------------------------------------------------------------
> Harmony:
> java version 1.5 (subset)
> (c) Copyright 1991, 2006 The Apache Software Foundation or its
licensors, as app
> licable.
> [EMAIL PROTECTED]
> JRockit:
> 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))
> res=null

--
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





--
Andrew Zhang
China Software Development Lab, IBM

Reply via email to