diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index 646825d65..e41ec5a83 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -3560,6 +3560,7 @@ void Session::handleTorrentResumeDataReady(TorrentHandle *const torrent, const l // isn't cheap too. QByteArray out; + out.reserve(1024 * 1024); // most fastresume file sizes are under 1 MB lt::bencode(std::back_inserter(out), data); const QString filename = QString("%1.fastresume").arg(torrent->hash()); diff --git a/src/base/bittorrent/torrenthandle.cpp b/src/base/bittorrent/torrenthandle.cpp index 497c31322..6d60072d3 100644 --- a/src/base/bittorrent/torrenthandle.cpp +++ b/src/base/bittorrent/torrenthandle.cpp @@ -1581,11 +1581,15 @@ bool TorrentHandle::saveTorrentFile(const QString &path) #endif const lt::entry torrentEntry = torrentCreator.generate(); - QVector out; + QByteArray out; + out.reserve(1024 * 1024); // most torrent file sizes are under 1 MB lt::bencode(std::back_inserter(out), torrentEntry); + if (out.isEmpty()) + return false; + QFile torrentFile(path); - if (!out.empty() && torrentFile.open(QIODevice::WriteOnly)) - return (torrentFile.write(&out[0], out.size()) == out.size()); + if (torrentFile.open(QIODevice::WriteOnly)) + return (torrentFile.write(out) == out.size()); return false; }