Darwin: Fix #28 clang analyzer warning about unbalanced retain/release
authorSean McBride <sean@rogue-research.com>
Fri, 5 Feb 2010 16:50:34 +0000 (11:50 -0500)
committerPeter Stuge <peter@stuge.se>
Mon, 13 Jun 2011 20:06:32 +0000 (22:06 +0200)
libusb/os/darwin_usb.c

index 169fa1a..7927b3a 100644 (file)
@@ -262,6 +262,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;
@@ -270,7 +271,8 @@ static void *event_thread_main (void *arg0) {
 
   usbi_info (ctx, "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);
@@ -306,7 +308,7 @@ static void *event_thread_main (void *arg0) {
   CFRunLoopSourceInvalidate (libusb_notification_cfsource);
   IONotificationPortDestroy (libusb_notification_port);
 
-  CFRelease (CFRunLoopGetCurrent ());
+  CFRelease (runloop);
 
   libusb_darwin_acfl = NULL;