diff --git a/include/poddlthread.h b/include/poddlthread.h index a10b9e7..cf0f1da 100644 --- a/include/poddlthread.h +++ b/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; diff --git a/src/pb_controller.cpp b/src/pb_controller.cpp index 09b5e89..da8ffcb 100644 --- a/src/pb_controller.cpp +++ b/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(); } } } diff --git a/src/pb_view.cpp b/src/pb_view.cpp index fb61c72..f3cb478 100644 --- a/src/pb_view.cpp +++ b/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(); } } } diff --git a/src/poddlthread.cpp b/src/poddlthread.cpp index 583481e..3a1b390 100644 --- a/src/poddlthread.cpp +++ b/src/poddlthread.cpp @@ -22,7 +22,6 @@ poddlthread::poddlthread(download * dl_, newsbeuter::configcontainer * c) : dl(d } poddlthread::~poddlthread() { - delete f; } void poddlthread::operator()() {