aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Ferbar <christian.ferbar@gmx.net>2018-03-27 20:34:39 +0200
committerChristian Ferbar <christian.ferbar@gmx.net>2018-03-27 20:34:39 +0200
commitadf0581b88e883c733905c89bfd562f0decc0ca4 (patch)
tree72dadd58e7f0ec424462a8d78492134c3d52eb07
parentc3e16cf54902089be6792774fd2aba48a846d30a (diff)
downloadk8055-adf0581b88e883c733905c89bfd562f0decc0ca4.tar.gz
k8055-adf0581b88e883c733905c89bfd562f0decc0ca4.tar.bz2
k8055-adf0581b88e883c733905c89bfd562f0decc0ca4.zip
add: cleanup on error
-rw-r--r--src/k8055.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/k8055.c b/src/k8055.c
index 6f3bc17..6b10cca 100644
--- a/src/k8055.c
+++ b/src/k8055.c
@@ -181,6 +181,8 @@ int k8055_open_device(int port, k8055_device** device) {
ssize_t size = libusb_get_device_list(context, &connected_devices); /* get all devices on system */
if (size <= 0) {
print_error("no usb devices found on system");
+ if (k8055_open_devices <= 0)
+ libusb_exit(context);
return K8055_ERROR_NO_DEVICES;
}
@@ -195,6 +197,9 @@ int k8055_open_device(int port, k8055_device** device) {
}
if (k8055 == NULL) {
print_error("velleman k8055 not found at port");
+ libusb_free_device_list(connected_devices, 1); // cleanup
+ if (k8055_open_devices <= 0)
+ libusb_exit(context);
return K8055_ERROR_NO_K8055;
}