From a5f629d7105bad2f00650f241ae7e2349b9acca0 Mon Sep 17 00:00:00 2001 From: Martchus Date: Wed, 7 Apr 2021 19:42:07 +0200 Subject: [PATCH] Avoid crash when start time can not be parsed --- connector/syncthingconnection.h | 2 +- connector/syncthingconnection_requests.cpp | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/connector/syncthingconnection.h b/connector/syncthingconnection.h index f73f764..4a55f6b 100644 --- a/connector/syncthingconnection.h +++ b/connector/syncthingconnection.h @@ -753,7 +753,7 @@ inline CppUtilities::DateTime SyncthingConnection::startTime() const */ inline CppUtilities::TimeSpan SyncthingConnection::uptime() const { - return CppUtilities::DateTime::gmtNow() - m_startTime; + return m_startTime.isNull() ? CppUtilities::TimeSpan() : CppUtilities::DateTime::gmtNow() - m_startTime; } /*! diff --git a/connector/syncthingconnection_requests.cpp b/connector/syncthingconnection_requests.cpp index 434cf76..45b0ee3 100644 --- a/connector/syncthingconnection_requests.cpp +++ b/connector/syncthingconnection_requests.cpp @@ -678,7 +678,11 @@ void SyncthingConnection::readStatus() const auto replyObj(replyDoc.object()); emitMyIdChanged(replyObj.value(QLatin1String("myID")).toString()); - m_startTime = DateTime::fromIsoStringGmt(replyObj.value(QLatin1String("startTime")).toString().toLocal8Bit().data()); + try { + m_startTime = DateTime::fromIsoStringGmt(replyObj.value(QLatin1String("startTime")).toString().toLocal8Bit().data()); + } catch (const ConversionException &) { + m_startTime = DateTime(); // tracking the start time isn't very important so just ignore + } m_hasStatus = true; if (m_keepPolling) {