]> sigrok.org Git - libsigrok.git/blobdiff - src/modbus/modbus.c
modbus: Close device after scan
[libsigrok.git] / src / modbus / modbus.c
index bd8c834495b2b0ee0eb3be75318505242341aa44..b7bf2e5ec565d6db33268a565850291d9d9ac065 100644 (file)
@@ -28,8 +28,8 @@
 SR_PRIV extern const struct sr_modbus_dev_inst modbus_serial_rtu_dev;
 
 static const struct sr_modbus_dev_inst *modbus_devs[] = {
-#ifdef HAVE_LIBSERIALPORT
-       &modbus_serial_rtu_dev,  /* Must be last as it matches any resource. */
+#ifdef HAVE_SERIAL_COMM
+       &modbus_serial_rtu_dev, /* Must be last as it matches any resource. */
 #endif
 };
 
@@ -51,13 +51,14 @@ static struct sr_dev_inst *sr_modbus_scan_resource(const char *resource,
                return NULL;
        };
 
-       if ((sdi = probe_device(modbus)))
-               return sdi;
+       sdi = probe_device(modbus);
 
        sr_modbus_close(modbus);
-       sr_modbus_free(modbus);
 
-       return NULL;
+       if (!sdi)
+               sr_modbus_free(modbus);
+
+       return sdi;
 }
 
 /**