diff --git a/qrenderdoc/Windows/Dialogs/CrashDialog.cpp b/qrenderdoc/Windows/Dialogs/CrashDialog.cpp index 905b9cd0a..42ce05ec4 100644 --- a/qrenderdoc/Windows/Dialogs/CrashDialog.cpp +++ b/qrenderdoc/Windows/Dialogs/CrashDialog.cpp @@ -331,15 +331,18 @@ void CrashDialog::sendReport() QHttpPart capture; QFile *file = new QFile(m_CaptureFilename); - file->open(QIODevice::ReadOnly); - file->setParent(multiPart); + if(file->open(QIODevice::ReadOnly)) + { + file->setParent(multiPart); - capture.setHeader(QNetworkRequest::ContentTypeHeader, lit("application/x-renderdoc-capture")); - capture.setHeader(QNetworkRequest::ContentDispositionHeader, - lit("form-data; name=\"capture\"; filename=\"capture.rdc\"")); - capture.setBodyDevice(file); + capture.setHeader(QNetworkRequest::ContentTypeHeader, + lit("application/x-renderdoc-capture")); + capture.setHeader(QNetworkRequest::ContentDispositionHeader, + lit("form-data; name=\"capture\"; filename=\"capture.rdc\"")); + capture.setBodyDevice(file); - multiPart->append(capture); + multiPart->append(capture); + } } if(m_Thumbnail) @@ -363,15 +366,23 @@ void CrashDialog::sendReport() QHttpPart report; QFile *file = new QFile(m_ReportPath); - file->open(QIODevice::ReadOnly); - file->setParent(multiPart); + if(file->open(QIODevice::ReadOnly)) + { + file->setParent(multiPart); - report.setHeader(QNetworkRequest::ContentTypeHeader, lit("application/zip")); - report.setHeader(QNetworkRequest::ContentDispositionHeader, - lit("form-data; name=\"report\"; filename=\"report.zip\"")); - report.setBodyDevice(file); + report.setHeader(QNetworkRequest::ContentTypeHeader, lit("application/zip")); + report.setHeader(QNetworkRequest::ContentDispositionHeader, + lit("form-data; name=\"report\"; filename=\"report.zip\"")); + report.setBodyDevice(file); - multiPart->append(report); + multiPart->append(report); + } + else + { + ui->progressText->setText(tr("Error preparing crash report")); + // can't send report without report.zip + return; + } } QNetworkRequest request(QUrl(lit(BUGREPORT_URL))); diff --git a/qrenderdoc/Windows/Dialogs/PerformanceCounterSelection.cpp b/qrenderdoc/Windows/Dialogs/PerformanceCounterSelection.cpp index 658c70d4f..91a623c15 100644 --- a/qrenderdoc/Windows/Dialogs/PerformanceCounterSelection.cpp +++ b/qrenderdoc/Windows/Dialogs/PerformanceCounterSelection.cpp @@ -402,35 +402,43 @@ void PerformanceCounterSelection::Load() QFile f(filename); if(f.open(QIODevice::ReadOnly | QIODevice::Text)) { - LoadFromJSON(doc, f, JSON_ID, JSON_VER); + bool success = LoadFromJSON(doc, f, JSON_ID, JSON_VER); - QSet selectedCounters; - - QVariantList counters = doc[lit("counters")].toList(); - - for(const QVariant &counter : counters) + if(success) { - QVariantList bytes = counter.toList(); - Uuid uuid; + QSet selectedCounters; - if(bytes.size() != 4) + QVariantList counters = doc[lit("counters")].toList(); + + for(const QVariant &counter : counters) { - qWarning() << "Counter ID doesn't count 4 words"; - continue; + QVariantList bytes = counter.toList(); + Uuid uuid; + + if(bytes.size() != 4) + { + qWarning() << "Counter ID doesn't count 4 words"; + continue; + } + + for(int i = 0; i < 4; ++i) + { + uuid.words[i] = bytes[i].toUInt(); + } + + if(!m_UuidToCounter.contains(uuid)) + continue; + + selectedCounters.insert(m_UuidToCounter[uuid]); } - for(int i = 0; i < 4; ++i) - { - uuid.words[i] = bytes[i].toUInt(); - } - - if(!m_UuidToCounter.contains(uuid)) - continue; - - selectedCounters.insert(m_UuidToCounter[uuid]); + SetSelectedCounters(selectedCounters.toList()); + } + else + { + RDDialog::critical(this, tr("Error loading config"), + tr("Couldn't interpret settings in %1.").arg(filename)); } - - SetSelectedCounters(selectedCounters.toList()); } else { diff --git a/qrenderdoc/Windows/MainWindow.cpp b/qrenderdoc/Windows/MainWindow.cpp index 57c225e81..e5d704ca4 100644 --- a/qrenderdoc/Windows/MainWindow.cpp +++ b/qrenderdoc/Windows/MainWindow.cpp @@ -1980,7 +1980,7 @@ bool MainWindow::eventFilter(QObject *watched, QEvent *event) void MainWindow::on_action_Close_Capture_triggered() { - PromptCloseCapture(); + (void)PromptCloseCapture(); } void MainWindow::on_action_Save_Capture_Inplace_triggered()