This is an automated email from Gerrit.

Andreas Fritiofson (andreas.fritiof...@gmail.com) just uploaded a new patch set 
to Gerrit, which you can find at http://openocd.zylin.com/1380

-- gerrit

commit a22981fd1cd4e0381d53cfcfd9a0ef8dfb95bda7
Author: Andreas Fritiofson <andreas.fritiof...@gmail.com>
Date:   Mon May 6 00:09:03 2013 +0200

    remote_bitbang: De-duplicate init code and clean up on error
    
    Change-Id: I8be413a9e1683f96f835232f9ff25d9bd42099de
    Signed-off-by: Andreas Fritiofson <andreas.fritiof...@gmail.com>

diff --git a/src/jtag/drivers/remote_bitbang.c 
b/src/jtag/drivers/remote_bitbang.c
index 7c8c06b..0223643 100644
--- a/src/jtag/drivers/remote_bitbang.c
+++ b/src/jtag/drivers/remote_bitbang.c
@@ -171,20 +171,7 @@ static int remote_bitbang_init_tcp(void)
                return ERROR_FAIL;
        }
 
-       remote_bitbang_in = fdopen(fd, "r");
-       if (remote_bitbang_in == NULL) {
-               LOG_ERROR("fdopen: failed to open read stream");
-               return ERROR_FAIL;
-       }
-
-       remote_bitbang_out = fdopen(fd, "w");
-       if (remote_bitbang_out == NULL) {
-               LOG_ERROR("fdopen: failed to open write stream");
-               return ERROR_FAIL;
-       }
-
-       LOG_INFO("remote_bitbang driver initialized");
-       return ERROR_OK;
+       return fd;
 }
 
 static int remote_bitbang_init_unix(void)
@@ -211,15 +198,34 @@ static int remote_bitbang_init_unix(void)
                return ERROR_FAIL;
        }
 
+       return fd;
+}
+
+static int remote_bitbang_init(void)
+{
+       int fd;
+       bitbang_interface = &remote_bitbang_bitbang;
+
+       LOG_INFO("Initializing remote_bitbang driver");
+       if (remote_bitbang_port == NULL)
+               fd = remote_bitbang_init_unix();
+       else
+               fd = remote_bitbang_init_tcp();
+
+       if (fd < 0)
+               return fd;
+
        remote_bitbang_in = fdopen(fd, "r");
        if (remote_bitbang_in == NULL) {
                LOG_ERROR("fdopen: failed to open read stream");
+               close(fd);
                return ERROR_FAIL;
        }
 
        remote_bitbang_out = fdopen(fd, "w");
        if (remote_bitbang_out == NULL) {
                LOG_ERROR("fdopen: failed to open write stream");
+               fclose(remote_bitbang_in);
                return ERROR_FAIL;
        }
 
@@ -227,16 +233,6 @@ static int remote_bitbang_init_unix(void)
        return ERROR_OK;
 }
 
-static int remote_bitbang_init(void)
-{
-       bitbang_interface = &remote_bitbang_bitbang;
-
-       LOG_INFO("Initializing remote_bitbang driver");
-       if (remote_bitbang_port == NULL)
-               return remote_bitbang_init_unix();
-       return remote_bitbang_init_tcp();
-}
-
 COMMAND_HANDLER(remote_bitbang_handle_remote_bitbang_port_command)
 {
        if (CMD_ARGC == 1) {

-- 

------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to