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;
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);
CFRunLoopSourceInvalidate (libusb_notification_cfsource);
IONotificationPortDestroy (libusb_notification_port);
- CFRelease (CFRunLoopGetCurrent ());
+ CFRelease (runloop);
libusb_darwin_acfl = NULL;