From d407c12a6ba7d2e5e020d280e313eea5bf6b9d69 Mon Sep 17 00:00:00 2001
From: Sean McBride <sean@rogue-research.com>
Date: Fri, 5 Feb 2010 11:50:34 -0500
Subject: [PATCH] fixed clang analyzer warnings

---
 libusb/io.c            |    2 ++
 libusb/os/darwin_usb.c |    9 +++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/libusb/io.c b/libusb/io.c
index 387be4c..5aa4b60 100644
--- a/libusb/io.c
+++ b/libusb/io.c
@@ -1243,6 +1243,8 @@ API_EXPORTED int libusb_submit_transfer(struct libusb_transfer *transfer)
 		if (r < 0)
 			r = LIBUSB_ERROR_OTHER;
 	}
+#else
+	(void)first;
 #endif
 
 out:
diff --git a/libusb/os/darwin_usb.c b/libusb/os/darwin_usb.c
index dfae564..46b79c2 100644
--- a/libusb/os/darwin_usb.c
+++ b/libusb/os/darwin_usb.c
@@ -255,6 +255,7 @@ static void darwin_clear_iterator (io_iterator_t iter) {
 static void *event_thread_main (void *arg0) {
   IOReturn kresult;
   struct libusb_context *ctx = (struct libusb_context *)arg0;
+  CFRunLoopRef runloop;
 
   /* hotplug (device removal) source */
   CFRunLoopSourceRef     libusb_notification_cfsource;
@@ -263,7 +264,8 @@ static void *event_thread_main (void *arg0) {
 
   _usbi_log (ctx, LOG_LEVEL_INFO, "creating hotplug event source");
 
-  CFRetain (CFRunLoopGetCurrent ());
+  runloop = CFRunLoopGetCurrent ();
+  CFRetain (runloop);
 
   /* add the notification port to the run loop */
   libusb_notification_port     = IONotificationPortCreate (libusb_darwin_mp);
@@ -299,7 +301,7 @@ static void *event_thread_main (void *arg0) {
   CFRunLoopSourceInvalidate (libusb_notification_cfsource);
   IONotificationPortDestroy (libusb_notification_port);
 
-  CFRelease (CFRunLoopGetCurrent ());
+  CFRelease (runloop);
 
   libusb_darwin_acfl = NULL;
 
@@ -597,6 +599,9 @@ static int darwin_open (struct libusb_device_handle *dev_handle) {
 
       /* create async event source */
       kresult = (*(dpriv->device))->CreateDeviceAsyncEventSource (dpriv->device, &priv->cfSource);
+      if (kresult != kIOReturnSuccess) {
+        _usbi_log (HANDLE_CTX (dev_handle), LOG_LEVEL_ERROR, "CreateDeviceAsyncEventSource failed: %s", darwin_error_str(kresult));
+      }
 
       CFRetain (libusb_darwin_acfl);
 
-- 
1.6.6


