Description: Handle libusb failure
    If libusb fails to open, the handle is invalid and should not be used or
    freed. This happened in package builds inside chroot environments.
Author: Simon Richter <sjr@debian.org>
Last-Update: 2013-04-06

diff --git a/src/usb/usb_resource_creator.cpp b/src/usb/usb_resource_creator.cpp
index b71ebf9..3ac4ac5 100644
--- a/src/usb/usb_resource_creator.cpp
+++ b/src/usb/usb_resource_creator.cpp
@@ -38,13 +38,17 @@ usb_resource::creator::creator()
 {
         if(libusb_init(&libusb) != LIBUSB_SUCCESS)
                 libusb = 0;
-        default_resource_manager.register_creator(*this);
+        if(libusb)
+                default_resource_manager.register_creator(*this);
 }
 
 usb_resource::creator::~creator() throw()
 {
-        default_resource_manager.unregister_creator(*this);
-        libusb_exit(libusb);
+        if(libusb)
+        {
+                default_resource_manager.unregister_creator(*this);
+                libusb_exit(libusb);
+        }
 }
 
 resource *usb_resource::creator::create(std::vector<std::string> const &components) const
