diff options
Diffstat (limited to 'Swift/Controllers')
| -rw-r--r-- | Swift/Controllers/AccountController.cpp | 2 | ||||
| -rw-r--r-- | Swift/Controllers/AccountController.h | 2 | ||||
| -rw-r--r-- | Swift/Controllers/FileTransfer/FileTransferProgressInfo.cpp | 8 | ||||
| -rw-r--r-- | Swift/Controllers/FileTransfer/FileTransferProgressInfo.h | 13 | ||||
| -rw-r--r-- | Swift/Controllers/Roster/LeastCommonSubsequence.h | 4 | ||||
| -rw-r--r-- | Swift/Controllers/Roster/TableRoster.cpp | 25 | ||||
| -rw-r--r-- | Swift/Controllers/Storages/CertificateFileStorage.cpp | 13 | ||||
| -rw-r--r-- | Swift/Controllers/XMPPEvents/EventController.cpp | 6 | ||||
| -rw-r--r-- | Swift/Controllers/XMPPEvents/EventController.h | 5 | 
9 files changed, 45 insertions, 33 deletions
| diff --git a/Swift/Controllers/AccountController.cpp b/Swift/Controllers/AccountController.cpp index ec914a6..27655c0 100644 --- a/Swift/Controllers/AccountController.cpp +++ b/Swift/Controllers/AccountController.cpp @@ -403,7 +403,7 @@ void AccountController::handleConnected() {      adHocManager_->setOnline(true);  } -void AccountController::handleEventQueueLengthChange(int count) { +void AccountController::handleEventQueueLengthChange(size_t count) {      dock_->setNumberOfPendingMessages(count);  } diff --git a/Swift/Controllers/AccountController.h b/Swift/Controllers/AccountController.h index 774aa8b..4a31645 100644 --- a/Swift/Controllers/AccountController.h +++ b/Swift/Controllers/AccountController.h @@ -111,7 +111,7 @@ namespace Swift {              void handleChangeStatusRequest(StatusShow::Type show, const std::string &statusText);              void handleDisconnected(const boost::optional<ClientError>& error);              void handleServerDiscoInfoResponse(std::shared_ptr<DiscoInfo>, ErrorPayload::ref); -            void handleEventQueueLengthChange(int count); +            void handleEventQueueLengthChange(size_t count);              void handleVCardReceived(const JID& j, VCard::ref vCard);              void handleSettingChanged(const std::string& settingPath);              void handlePurgeSavedLoginRequest(const std::string& username); diff --git a/Swift/Controllers/FileTransfer/FileTransferProgressInfo.cpp b/Swift/Controllers/FileTransfer/FileTransferProgressInfo.cpp index b073017..eddace9 100644 --- a/Swift/Controllers/FileTransfer/FileTransferProgressInfo.cpp +++ b/Swift/Controllers/FileTransfer/FileTransferProgressInfo.cpp @@ -5,7 +5,7 @@   */  /* - * Copyright (c) 2016 Isode Limited. + * Copyright (c) 2016-2018 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -18,13 +18,13 @@  namespace Swift { -FileTransferProgressInfo::FileTransferProgressInfo(boost::uintmax_t completeBytes) : completeBytes(completeBytes), completedBytes(0), percentage(0) { +FileTransferProgressInfo::FileTransferProgressInfo(size_t completeBytes) : completeBytes(completeBytes), completedBytes(0), percentage(0) {      onProgressPercentage(0);  } -void FileTransferProgressInfo::setBytesProcessed(int processedBytes) { +void FileTransferProgressInfo::setBytesProcessed(size_t processedBytes) {      int oldPercentage = int(double(completedBytes) / double(completeBytes) * 100.0); -    completedBytes += boost::numeric_cast<boost::uintmax_t>(processedBytes); +    completedBytes += processedBytes;      int newPercentage = int(double(completedBytes) / double(completeBytes) * 100.0);      if (oldPercentage != newPercentage) {          onProgressPercentage(newPercentage); diff --git a/Swift/Controllers/FileTransfer/FileTransferProgressInfo.h b/Swift/Controllers/FileTransfer/FileTransferProgressInfo.h index 5fb955c..869ceba 100644 --- a/Swift/Controllers/FileTransfer/FileTransferProgressInfo.h +++ b/Swift/Controllers/FileTransfer/FileTransferProgressInfo.h @@ -5,31 +5,32 @@   */  /* - * Copyright (c) 2016 Isode Limited. + * Copyright (c) 2016-2018 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */  #pragma once -#include <boost/cstdint.hpp> +#include <cstddef> +  #include <boost/signals2.hpp>  namespace Swift {  class FileTransferProgressInfo {  public: -    FileTransferProgressInfo(boost::uintmax_t completeBytes); +    FileTransferProgressInfo(size_t completeBytes);  public: -    void setBytesProcessed(int processedBytes); +    void setBytesProcessed(size_t processedBytes);      int getPercentage() const;      boost::signals2::signal<void (int)> onProgressPercentage;  private: -    boost::uintmax_t completeBytes; -    boost::uintmax_t completedBytes; +    size_t completeBytes; +    size_t completedBytes;      int percentage;  }; diff --git a/Swift/Controllers/Roster/LeastCommonSubsequence.h b/Swift/Controllers/Roster/LeastCommonSubsequence.h index 8daa20c..7988ee7 100644 --- a/Swift/Controllers/Roster/LeastCommonSubsequence.h +++ b/Swift/Controllers/Roster/LeastCommonSubsequence.h @@ -1,5 +1,5 @@  /* - * Copyright (c) 2011-2016 Isode Limited. + * Copyright (c) 2011-2018 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -32,7 +32,7 @@ namespace Swift {              Predicate predicate;              for (size_t i = 1; i < width; ++i) {                  for (size_t j = 1; j < height; ++j) { -                    result[i + j*width] = predicate(*(xBegin + boost::numeric_cast<long long>(i)-1), *(yBegin + boost::numeric_cast<long long >(j)-1)) ? result[(i-1) + (j-1)*width] + 1 : std::max(result[i + (j-1)*width], result[i-1 + (j*width)]); +                    result[i + j*width] = predicate(*(xBegin + static_cast<long long>(i)-1), *(yBegin + static_cast<long long>(j)-1)) ? result[(i-1) + (j-1)*width] + 1 : std::max(result[i + (j-1)*width], result[i-1 + (j*width)]);                  }              }          } diff --git a/Swift/Controllers/Roster/TableRoster.cpp b/Swift/Controllers/Roster/TableRoster.cpp index 713f390..01bf4a6 100644 --- a/Swift/Controllers/Roster/TableRoster.cpp +++ b/Swift/Controllers/Roster/TableRoster.cpp @@ -1,5 +1,5 @@  /* - * Copyright (c) 2011-2016 Isode Limited. + * Copyright (c) 2011-2018 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -132,15 +132,20 @@ void TableRoster::handleUpdateTimerTick() {          std::vector<size_t> itemRemoves;          std::vector<size_t> itemInserts;          computeIndexDiff<Item, ItemEquals, ItemNeedsUpdate >(sections[sectionUpdates[i]].items, newSections[sectionPostUpdates[i]].items, itemUpdates, itemPostUpdates, itemRemoves, itemInserts); -        size_t end = update.insertedRows.size(); -        update.insertedRows.resize(update.insertedRows.size() + itemInserts.size()); -        std::transform(itemInserts.begin(), itemInserts.end(), update.insertedRows.begin() + boost::numeric_cast<long long>(end), CreateIndexForSection(sectionPostUpdates[i])); -        end = update.deletedRows.size(); -        update.deletedRows.resize(update.deletedRows.size() + itemRemoves.size()); -        std::transform(itemRemoves.begin(), itemRemoves.end(), update.deletedRows.begin() + boost::numeric_cast<long long>(end), CreateIndexForSection(sectionUpdates[i])); -        end = update.updatedRows.size(); -        update.updatedRows.resize(update.updatedRows.size() + itemUpdates.size()); -        std::transform(itemUpdates.begin(), itemUpdates.end(), update.updatedRows.begin() + boost::numeric_cast<long long>(end), CreateIndexForSection(sectionPostUpdates[i])); +        try { +            size_t end = update.insertedRows.size(); +            update.insertedRows.resize(update.insertedRows.size() + itemInserts.size()); +            std::transform(itemInserts.begin(), itemInserts.end(), update.insertedRows.begin() + boost::numeric_cast<long long>(end), CreateIndexForSection(sectionPostUpdates[i])); +            end = update.deletedRows.size(); +            update.deletedRows.resize(update.deletedRows.size() + itemRemoves.size()); +            std::transform(itemRemoves.begin(), itemRemoves.end(), update.deletedRows.begin() + boost::numeric_cast<long long>(end), CreateIndexForSection(sectionUpdates[i])); +            end = update.updatedRows.size(); +            update.updatedRows.resize(update.updatedRows.size() + itemUpdates.size()); +            std::transform(itemUpdates.begin(), itemUpdates.end(), update.updatedRows.begin() + boost::numeric_cast<long long>(end), CreateIndexForSection(sectionPostUpdates[i])); +        } +        catch (const boost::numeric::bad_numeric_cast&) { +            // If any container claims it has more than long long max items, we have bigger issues, so letting this pass +        }      }      // Switch the old model with the new diff --git a/Swift/Controllers/Storages/CertificateFileStorage.cpp b/Swift/Controllers/Storages/CertificateFileStorage.cpp index 8ba7d12..2e1343f 100644 --- a/Swift/Controllers/Storages/CertificateFileStorage.cpp +++ b/Swift/Controllers/Storages/CertificateFileStorage.cpp @@ -50,10 +50,15 @@ void CertificateFileStorage::addCertificate(Certificate::ref certificate) {              std::cerr << "ERROR: " << e.what() << std::endl;          }      } -    boost::filesystem::ofstream file(certificatePath, boost::filesystem::ofstream::binary|boost::filesystem::ofstream::out); -    ByteArray data = certificate->toDER(); -    file.write(reinterpret_cast<const char*>(vecptr(data)), boost::numeric_cast<std::streamsize>(data.size())); -    file.close(); +    try { +        boost::filesystem::ofstream file(certificatePath, boost::filesystem::ofstream::binary|boost::filesystem::ofstream::out); +        ByteArray data = certificate->toDER(); +        file.write(reinterpret_cast<const char*>(vecptr(data)), boost::numeric_cast<std::streamsize>(data.size())); +        file.close(); +    } +    catch (...) { +        SWIFT_LOG(warning) << "Failed to store certificate to " << certificatePath << std::endl; +    }  }  boost::filesystem::path CertificateFileStorage::getCertificatePath(Certificate::ref certificate) const { diff --git a/Swift/Controllers/XMPPEvents/EventController.cpp b/Swift/Controllers/XMPPEvents/EventController.cpp index f8fb192..0e9429d 100644 --- a/Swift/Controllers/XMPPEvents/EventController.cpp +++ b/Swift/Controllers/XMPPEvents/EventController.cpp @@ -1,5 +1,5 @@  /* - * Copyright (c) 2010-2016 Isode Limited. + * Copyright (c) 2010-2018 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -51,7 +51,7 @@ void EventController::handleIncomingEvent(std::shared_ptr<StanzaEvent> sourceEve      if ((messageEvent && messageEvent->isReadable()) || subscriptionEvent || errorEvent || mucInviteEvent || incomingFileTransferEvent) {          events_.push_back(sourceEvent);          sourceEvent->onConclusion.connect(boost::bind(&EventController::handleEventConcluded, this, sourceEvent)); -        onEventQueueLengthChange(boost::numeric_cast<int>(events_.size())); +        onEventQueueLengthChange(events_.size());          onEventQueueEventAdded(sourceEvent);          if (sourceEvent->getConcluded()) {              handleEventConcluded(sourceEvent); @@ -62,7 +62,7 @@ void EventController::handleIncomingEvent(std::shared_ptr<StanzaEvent> sourceEve  void EventController::handleEventConcluded(std::shared_ptr<StanzaEvent> event) {      event->onConclusion.disconnect(boost::bind(&EventController::handleEventConcluded, this, event));      events_.erase(std::remove(events_.begin(), events_.end(), event), events_.end()); -    onEventQueueLengthChange(boost::numeric_cast<int>(events_.size())); +    onEventQueueLengthChange(events_.size());  }  void EventController::disconnectAll() { diff --git a/Swift/Controllers/XMPPEvents/EventController.h b/Swift/Controllers/XMPPEvents/EventController.h index 8a095d9..5b746e4 100644 --- a/Swift/Controllers/XMPPEvents/EventController.h +++ b/Swift/Controllers/XMPPEvents/EventController.h @@ -1,11 +1,12 @@  /* - * Copyright (c) 2010-2016 Isode Limited. + * Copyright (c) 2010-2018 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */  #pragma once +#include <cstddef>  #include <memory>  #include <vector> @@ -22,7 +23,7 @@ namespace Swift {              ~EventController();              void handleIncomingEvent(std::shared_ptr<StanzaEvent> sourceEvent); -            boost::signals2::signal<void (int)> onEventQueueLengthChange; +            boost::signals2::signal<void (size_t)> onEventQueueLengthChange;              boost::signals2::signal<void (std::shared_ptr<StanzaEvent>)> onEventQueueEventAdded;              const EventList& getEvents() const {return events_;}              void disconnectAll(); | 
 Swift
 Swift