Browse Source

Merge pull request #11422 from Chocobo1/buffer

Reserve memory for file data buffers
adaptive-webui-19844
Mike Tzou 5 years ago committed by GitHub
parent
commit
6da39d9279
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      src/base/bittorrent/session.cpp
  2. 10
      src/base/bittorrent/torrenthandle.cpp

1
src/base/bittorrent/session.cpp

@ -3560,6 +3560,7 @@ void Session::handleTorrentResumeDataReady(TorrentHandle *const torrent, const l @@ -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());

10
src/base/bittorrent/torrenthandle.cpp

@ -1581,11 +1581,15 @@ bool TorrentHandle::saveTorrentFile(const QString &path) @@ -1581,11 +1581,15 @@ bool TorrentHandle::saveTorrentFile(const QString &path)
#endif
const lt::entry torrentEntry = torrentCreator.generate();
QVector<char> 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;
}

Loading…
Cancel
Save