--- a/include/poddlthread.h +++ a/include/poddlthread.h @@ -7,6 +7,7 @@ #include #include +#include #include @@ -24,7 +25,7 @@ class poddlthread { private: void mkdir_p(const char * file); download * dl; - std::ofstream *f; + std::shared_ptr f; timeval tv1; timeval tv2; size_t bytecount; --- a/src/pb_controller.cpp +++ a/src/pb_controller.cpp @@ -287,6 +287,7 @@ void pb_controller::start_downloads() { if (it->status() == DL_QUEUED) { std::thread t {poddlthread(&(*it), cfg)}; --dl2start; + t.detach(); } } } --- a/src/pb_view.cpp +++ a/src/pb_view.cpp @@ -111,6 +111,7 @@ void pb_view::run(bool auto_download) { if (idx != -1) { if (ctrl->downloads()[idx].status() != DL_DOWNLOADING) { std::thread t {poddlthread(&ctrl->downloads()[idx], ctrl->get_cfgcont())}; + t.detach(); } } } --- a/src/poddlthread.cpp +++ a/src/poddlthread.cpp @@ -22,7 +22,6 @@ poddlthread::poddlthread(download * dl_, newsbeuter::configcontainer * c) : dl(d } poddlthread::~poddlthread() { - delete f; } void poddlthread::operator()() {