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
// isn't cheap too. // isn't cheap too.
QByteArray out; QByteArray out;
out.reserve(1024 * 1024); // most fastresume file sizes are under 1 MB
lt::bencode(std::back_inserter(out), data); lt::bencode(std::back_inserter(out), data);
const QString filename = QString("%1.fastresume").arg(torrent->hash()); 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)
#endif #endif
const lt::entry torrentEntry = torrentCreator.generate(); 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); lt::bencode(std::back_inserter(out), torrentEntry);
if (out.isEmpty())
return false;
QFile torrentFile(path); QFile torrentFile(path);
if (!out.empty() && torrentFile.open(QIODevice::WriteOnly)) if (torrentFile.open(QIODevice::WriteOnly))
return (torrentFile.write(&out[0], out.size()) == out.size()); return (torrentFile.write(out) == out.size());
return false; return false;
} }

Loading…
Cancel
Save