summaryrefslogtreecommitdiffstats
path: root/src/nolo.c
diff options
context:
space:
mode:
authorPali Rohár <pali.rohar@gmail.com>2014-11-18 20:15:14 +0100
committerPali Rohár <pali.rohar@gmail.com>2014-11-18 20:15:14 +0100
commit8c788bad62ff31f1034e92144ccfc19b0883121e (patch)
treedd8fd1b4f80d98706c0936a0c7df6c06507bd1f3 /src/nolo.c
parent142ef93ddc8fe78c136547f2d127502aacc633e4 (diff)
download0xFFFF-8c788bad62ff31f1034e92144ccfc19b0883121e.tar.bz2
nolo: Do not call NOLO_ERROR_LOG when not needed
Diffstat (limited to 'src/nolo.c')
-rw-r--r--src/nolo.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/nolo.c b/src/nolo.c
index 86a39eb..e437ef7 100644
--- a/src/nolo.c
+++ b/src/nolo.c
@@ -84,12 +84,14 @@ static void nolo_error_log(struct usb_device_info * dev, int only_clear) {
char buf[2048];
size_t i, count;
+ int ret;
for ( count = 0; count < 20; ++count ) {
memset(buf, 0, sizeof(buf));
- if ( usb_control_msg(dev->udev, NOLO_QUERY, NOLO_ERROR_LOG, 0, 0, buf, sizeof(buf), 2000) <= 0 )
+ ret = usb_control_msg(dev->udev, NOLO_QUERY, NOLO_ERROR_LOG, 0, 0, buf, sizeof(buf), 2000);
+ if ( ret < 0 )
break;
if ( ! only_clear ) {
@@ -103,6 +105,9 @@ static void nolo_error_log(struct usb_device_info * dev, int only_clear) {
}
+ if ( (size_t)ret < sizeof(buf) )
+ break;
+
}
}
@@ -180,11 +185,10 @@ static int nolo_get_version_string(struct usb_device_info * dev, const char * st
return -1;
ret = nolo_get_string(dev, buf, out, size);
-
- nolo_error_log(dev, 1);
-
- if ( ret < 0 )
+ if ( ret < 0 ) {
+ nolo_error_log(dev, 1);
return ret;
+ }
if ( ! out[0] )
return -1;