libftdi-git Archives

Subject: port libftdi to libusb-1.0 branch, master, updated. v0.17-213-g4cc3fa8

From: libftdi-git@xxxxxxxxxxxxxxxxxxxxxxx
To: libftdi-git@xxxxxxxxxxxxxxxxxxxxxxx
Date: Tue, 28 Jun 2011 16:35:35 +0200 (CEST)
The branch, master has been updated
       via  4cc3fa8a4675e46b8cf8b200175a28dd7fc027ca (commit)
      from  26063beccb19527833b2d23877d61b56527b9985 (commit)


- Log -----------------------------------------------------------------
commit 4cc3fa8a4675e46b8cf8b200175a28dd7fc027ca
Author: Uwe Bonnes <bon@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Date:   Tue Jun 21 15:15:39 2011 +0200

    Fix all leak in the examples shown with no device connected

-----------------------------------------------------------------------

Summary of changes:
 examples/bitbang.c        |    7 +++++--
 examples/bitbang2.c       |    2 ++
 examples/bitbang_cbus.c   |    8 +++++++-
 examples/bitbang_ft2232.c |    2 ++
 examples/find_all.c       |   12 +++++++++---
 examples/simple.c         |    2 ++
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/examples/bitbang.c b/examples/bitbang.c
index ff2fbed..f4168ac 100644
--- a/examples/bitbang.c
+++ b/examples/bitbang.c
@@ -13,6 +13,7 @@ int main(int argc, char **argv)
     struct ftdi_context ftdic;
     int f,i;
     unsigned char buf[1];
+    int retval = 0;
 
     if (ftdi_init(&ftdic) < 0)
     {
@@ -25,7 +26,8 @@ int main(int argc, char **argv)
     if (f < 0 && f != -5)
     {
         fprintf(stderr, "unable to open ftdi device: %d (%s)\n", f, 
ftdi_get_error_string(&ftdic));
-        exit(-1);
+        retval = 1;
+        goto done;
     }
 
     printf("ftdi open succeeded: %d\n",f);
@@ -78,7 +80,8 @@ int main(int argc, char **argv)
     ftdi_disable_bitbang(&ftdic);
 
     ftdi_usb_close(&ftdic);
+done:
     ftdi_deinit(&ftdic);
 
-    return 0;
+    return retval;
 }
diff --git a/examples/bitbang2.c b/examples/bitbang2.c
index df34bba..fa588f9 100644
--- a/examples/bitbang2.c
+++ b/examples/bitbang2.c
@@ -41,6 +41,7 @@ void ftdi_fatal (struct ftdi_context *ftdi, char *str)
 {
     fprintf (stderr, "%s: %s\n",
              str, ftdi_get_error_string (ftdi));
+    ftdi_deinit(ftdi);
     exit (1);
 }
 
@@ -64,6 +65,7 @@ int main(int argc, char **argv)
     if (ftdi_init(&ftdic) < 0)
     {
         fprintf(stderr, "ftdi_init failed\n");
+        ftdi_deinit(&ftdic);
         return EXIT_FAILURE;
     }
 
diff --git a/examples/bitbang_cbus.c b/examples/bitbang_cbus.c
index 17d27eb..f47c359 100644
--- a/examples/bitbang_cbus.c
+++ b/examples/bitbang_cbus.c
@@ -41,6 +41,7 @@ int main(void)
     unsigned char buf[1];
     unsigned char bitmask;
     char input[10];
+    int retval = 0;
 
     if (ftdi_init(&ftdic) < 0)
     {
@@ -52,6 +53,7 @@ int main(void)
     if (f < 0 && f != -5)
     {
         fprintf(stderr, "unable to open ftdi device: %d (%s)\n", f, 
ftdi_get_error_string(&ftdic));
+        ftdi_deinit(&ftdic);
         exit(-1);
     }
     printf("ftdi open succeeded: %d\n",f);
@@ -67,7 +69,9 @@ int main(void)
         if (f < 0)
         {
             fprintf(stderr, "set_bitmode failed for 0x%x, error %d (%s)\n", 
bitmask, f, ftdi_get_error_string(&ftdic));
-            exit(-1);
+            ftdi_usb_close(&ftdic);
+            ftdi_deinit(&ftdic);
+            retval = -1;
         }
 
         // read CBUS
@@ -75,6 +79,8 @@ int main(void)
         if (f < 0)
         {
             fprintf(stderr, "read_pins failed, error %d (%s)\n", f, 
ftdi_get_error_string(&ftdic));
+            ftdi_usb_close(&ftdic);
+            ftdi_deinit(&ftdic);
             exit(-1);
         }
         printf("Read returned 0x%01x\n", buf[0] & 0x0f);
diff --git a/examples/bitbang_ft2232.c b/examples/bitbang_ft2232.c
index c99e687..6eb223e 100644
--- a/examples/bitbang_ft2232.c
+++ b/examples/bitbang_ft2232.c
@@ -34,6 +34,7 @@ int main(int argc, char **argv)
     if (f < 0 && f != -5)
     {
         fprintf(stderr, "unable to open ftdi device: %d (%s)\n", f, 
ftdi_get_error_string(&ftdic));
+        ftdi_deinit(&ftdic);
         exit(-1);
     }
     printf("ftdi open succeeded(channel 1): %d\n",f);
@@ -52,6 +53,7 @@ int main(int argc, char **argv)
     if (f < 0 && f != -5)
     {
         fprintf(stderr, "unable to open ftdi device: %d (%s)\n", f, 
ftdi_get_error_string(&ftdic2));
+        ftdi_deinit(&ftdic2);
         exit(-1);
     }
     printf("ftdi open succeeded(channel 2): %d\n",f);
diff --git a/examples/find_all.c b/examples/find_all.c
index 936a824..7d1aab4 100644
--- a/examples/find_all.c
+++ b/examples/find_all.c
@@ -15,6 +15,7 @@ int main(void)
     struct ftdi_context ftdic;
     struct ftdi_device_list *devlist, *curdev;
     char manufacturer[128], description[128];
+    int retval = EXIT_SUCCESS;
 
     if (ftdi_init(&ftdic) < 0)
     {
@@ -25,7 +26,9 @@ int main(void)
     if ((ret = ftdi_usb_find_all(&ftdic, &devlist, 0x0403, 0x6001)) < 0)
     {
         fprintf(stderr, "ftdi_usb_find_all failed: %d (%s)\n", ret, 
ftdi_get_error_string(&ftdic));
-        return EXIT_FAILURE;
+        retval =  EXIT_FAILURE;
+        return retval;
+        goto do_deinit;
     }
 
     printf("Number of FTDI devices found: %d\n", ret);
@@ -37,13 +40,16 @@ int main(void)
         if ((ret = ftdi_usb_get_strings(&ftdic, curdev->dev, manufacturer, 
128, description, 128, NULL, 0)) < 0)
         {
             fprintf(stderr, "ftdi_usb_get_strings failed: %d (%s)\n", ret, 
ftdi_get_error_string(&ftdic));
-            return EXIT_FAILURE;
+            retval = EXIT_FAILURE;
+            return retval;
+            goto done;
         }
         printf("Manufacturer: %s, Description: %s\n\n", manufacturer, 
description);
         curdev = curdev->next;
     }
-
+done:
     ftdi_list_free(&devlist);
+do_deinit:
     ftdi_deinit(&ftdic);
 
     return EXIT_SUCCESS;
diff --git a/examples/simple.c b/examples/simple.c
index 0fcf4e8..145e931 100644
--- a/examples/simple.c
+++ b/examples/simple.c
@@ -22,6 +22,7 @@ int main(void)
     if ((ret = ftdi_usb_open(&ftdic, 0x0403, 0x6001)) < 0)
     {
         fprintf(stderr, "unable to open ftdi device: %d (%s)\n", ret, 
ftdi_get_error_string(&ftdic));
+        ftdi_deinit(&ftdic);
         return EXIT_FAILURE;
     }
 
@@ -36,6 +37,7 @@ int main(void)
     if ((ret = ftdi_usb_close(&ftdic)) < 0)
     {
         fprintf(stderr, "unable to close ftdi device: %d (%s)\n", ret, 
ftdi_get_error_string(&ftdic));
+        ftdi_deinit(&ftdic);
         return EXIT_FAILURE;
     }
 


hooks/post-receive
-- 
port libftdi to libusb-1.0

--
libftdi-git - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi-git+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx   

Current Thread
  • port libftdi to libusb-1.0 branch, master, updated. v0.17-213-g4cc3fa8, libftdi-git <=