/**
* Free device instance struct created by sr_dev_inst().
*
- * @param sdi Device instance to free. Must not be NULL.
+ * @param sdi Device instance to free. If NULL, the function will do nothing.
*
* @private
*/
struct sr_channel_group *cg;
GSList *l;
+ if (!sdi)
+ return;
+
for (l = sdi->channels; l; l = l->next) {
ch = l->data;
g_free(ch->name);
/**
* Free struct sr_usb_dev_inst * allocated by sr_usb_dev_inst().
*
- * @param usb The struct sr_usb_dev_inst * to free. Must not be NULL.
+ * @param usb The struct sr_usb_dev_inst * to free. If NULL, this
+ * function does nothing.
*
* @private
*/
/**
* Free struct sr_serial_dev_inst * allocated by sr_serial_dev_inst().
*
- * @param serial The struct sr_serial_dev_inst * to free. Must not be NULL.
+ * @param serial The struct sr_serial_dev_inst * to free. If NULL, this
+ * function will do nothing.
*
* @private
*/
SR_PRIV void sr_serial_dev_inst_free(struct sr_serial_dev_inst *serial)
{
+ if (!serial)
+ return;
+
g_free(serial->port);
g_free(serial->serialcomm);
g_free(serial);
/** @private */
SR_PRIV void sr_usbtmc_dev_inst_free(struct sr_usbtmc_dev_inst *usbtmc)
{
+ if (!usbtmc)
+ return;
+
g_free(usbtmc->device);
g_free(usbtmc);
}