trim21 bf74686c29 fix: replace reinterpret_cast UB in command_base with aligned placement new
Replace the union-based reinterpret_cast type erasure in command_base
with an alignas char buffer + typed copy/destroy helper pointers.

set_function<T>() placement-news the correct std::function<T> type
at the buffer address, and stores per-type copy/destroy helpers so
that the copy ctor, assignment, and destructor always operate on the
actual type rather than assuming base_function.

_reinterpret_cast<T&> access of t_pod remains zero-overhead and is
now well-defined because the object was constructed at that address
as T via placement new.

Fixes #1818
2026-06-18 11:05:58 +02:00
2026-04-10 22:04:02 +09:00
2026-06-01 20:11:02 +09:00
2026-06-01 20:11:02 +09:00
2014-09-15 16:03:10 +09:00
2026-06-14 09:38:10 +02:00
2005-01-25 18:47:10 +00:00
2025-10-02 16:31:53 +09:00

RTorrent BitTorrent Client

Introduction

A ncurses-based command line torrent client for high performance.

To learn how to use rTorrent visit the Wiki.

Download the latest stable release

Donate to rTorrent development

  • Paypal
  • Patreon
  • SubscribeStar
  • Bitcoin: 1MpmXm5AHtdBoDaLZstJw8nupJJaeKu8V8
  • Ethereum: 0x9AB1e3C3d8a875e870f161b3e9287Db0E6DAfF78
  • Litecoin: LdyaVR67LBnTf6mAT4QJnjSG2Zk67qxmfQ
  • Cardano: addr1qytaslmqmk6dspltw06sp0zf83dh09u79j49ceh5y26zdcccgq4ph7nmx6kgmzeldauj43254ey97f3x4xw49d86aguqwfhlte

Help keep rTorrent development going by donating to its creator.

BUILDING

Jump into the github cloned directory

cd rtorrent

Install build dependencies

Install libtorrent with the same version rTorrent.

Generate configure scripts:

autoreconf -ivf

Optionally, generate man pages:

docbook2man rtorrent.1.xml

Man pages output to "doc/rtorrent.1".

RTorrent follows the development of libtorrent closely, and thus the versions must be in sync.

USAGE

Refer to User Guide: https://github.com/rakshasa/rtorrent/wiki/User-Guide

LICENSE

GNU GPL, see COPYING. "libtorrent/src/utils/sha_fast.{cc,h}" is originally from the Mozilla NSS and is under a triple license; MPL, LGPL and GPL. An exception to non-NSS code has been added for linking to OpenSSL as requested by Debian, though the author considers that library to be part of the Operative System and thus linking is allowed according to the GPL.

Use whatever fits your purpose, the code required to compile with Mozilla's NSS implementation of SHA1 has been retained and can be compiled if the user wishes to avoid using OpenSSL.

DEPENDENCIES

  • libcurl >= 7.12.0
  • libtorrent = (same version)
  • ncurses

BUILD DEPENDENCIES

  • libtoolize
  • aclocal
  • autoconf
  • autoheader
  • automake
S
Description
Languages
C++ 93.4%
M4 6%
Makefile 0.3%
Lua 0.2%
C 0.1%