diff --git a/devices/perseus/deviceperseusscan.cpp b/devices/perseus/deviceperseusscan.cpp index a416d75f4..3fe30b8fd 100644 --- a/devices/perseus/deviceperseusscan.cpp +++ b/devices/perseus/deviceperseusscan.cpp @@ -39,6 +39,7 @@ void DevicePerseusScan::scan(int nbDevices) if (perseus_firmware_download(descr, 0) < 0) { qCritical("DevicePerseusScan::scan: firmware download error: %s", perseus_errorstr()); + perseus_close(descr); continue; } else diff --git a/sdrgui/mainwindow.cpp b/sdrgui/mainwindow.cpp index 79a19e913..274ef5fff 100644 --- a/sdrgui/mainwindow.cpp +++ b/sdrgui/mainwindow.cpp @@ -395,11 +395,13 @@ void MainWindow::removeLastDevice() ui->tabInputsView->setTabToolTip(i, m_deviceWidgetTabs[i].displayName); } - delete m_deviceUIs.back()->m_deviceSourceAPI; + DeviceSourceAPI *sourceAPI = m_deviceUIs.back()->m_deviceSourceAPI; delete m_deviceUIs.back(); lastDeviceEngine->stop(); m_dspEngine->removeLastDeviceSourceEngine(); + + delete sourceAPI; } else if (m_deviceUIs.back()->m_deviceSinkEngine) // sink tab { @@ -435,11 +437,13 @@ void MainWindow::removeLastDevice() ui->tabInputsView->setTabToolTip(i, m_deviceWidgetTabs[i].displayName); } - delete m_deviceUIs.back()->m_deviceSinkAPI; + DeviceSinkAPI *sinkAPI = m_deviceUIs.back()->m_deviceSinkAPI; delete m_deviceUIs.back(); lastDeviceEngine->stop(); m_dspEngine->removeLastDeviceSinkEngine(); + + delete sinkAPI; } m_deviceUIs.pop_back();