X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fkingst-la2016%2Fapi.c;fp=src%2Fhardware%2Fkingst-la2016%2Fapi.c;h=5a4ee6fa2ad48add223df0057ac6b1aefc4ebf9d;hb=683f977e266eea4958839c561888f0f96c043ab6;hp=5f536933fe6d8b49d9120a7c19454f8fb724595d;hpb=5bc8174531df86991ba8aa6d12942923925d9e72;p=libsigrok.git diff --git a/src/hardware/kingst-la2016/api.c b/src/hardware/kingst-la2016/api.c index 5f536933..5a4ee6fa 100644 --- a/src/hardware/kingst-la2016/api.c +++ b/src/hardware/kingst-la2016/api.c @@ -198,15 +198,21 @@ static void kingst_la2016_free_devc(struct dev_context *devc) /* Convenience. Release an allocated sdi from error paths. */ static void kingst_la2016_free_sdi(struct sr_dev_inst *sdi) { + struct sr_usb_dev_inst *usb; + struct dev_context *devc; + if (!sdi) return; - g_free(sdi->vendor); - g_free(sdi->model); - g_free(sdi->version); - g_free(sdi->serial_num); - g_free(sdi->connection_id); - sr_usb_dev_inst_free(sdi->conn); - kingst_la2016_free_devc(sdi->priv); + + usb = sdi->conn; + if (usb && usb->devhdl) + sr_usb_close(usb); + sr_usb_dev_inst_free(usb); + + devc = sdi->priv; + kingst_la2016_free_devc(devc); + + sr_dev_inst_free(sdi); } /* Convenience. Open a USB device (including claiming an interface). */