diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-04-11 20:12:40 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-04-12 22:16:56 +0300 |
commit | 05b80226010bef5d296ed8331a0582a6e045a4ae (patch) | |
tree | 85feaa29f9fc331852c50199fe0cd275066f3151 | |
parent | 9b2544d3df481bc9dd0795fb645b544ba6484216 (diff) |
test: threads: Fix memory leak
The last instance of Thread allocated in the test is never deleted, nor
are other instances deleted in error paths. Use a std::unique_ptr<> to
ensure deletion.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Tested-by: Sebastian Fricke <sebastian.fricke@posteo.net>
-rw-r--r-- | test/threads.cpp | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/test/threads.cpp b/test/threads.cpp index b4b8d913..e0c50dc9 100644 --- a/test/threads.cpp +++ b/test/threads.cpp @@ -7,6 +7,7 @@ #include <chrono> #include <iostream> +#include <memory> #include <thread> #include "libcamera/internal/thread.h" @@ -45,23 +46,23 @@ protected: int run() { /* Test Thread() retrieval for the main thread. */ - Thread *thread = Thread::current(); - if (!thread) { + Thread *mainThread = Thread::current(); + if (!mainThread) { cout << "Thread::current() failed to main thread" << endl; return TestFail; } - if (!thread->isRunning()) { + if (!mainThread->isRunning()) { cout << "Main thread is not running" << endl; return TestFail; } /* Test starting the main thread, the test shall not crash. */ - thread->start(); + mainThread->start(); /* Test the running state of a custom thread. */ - thread = new Thread(); + std::unique_ptr<Thread> thread = std::make_unique<Thread>(); thread->start(); if (!thread->isRunning()) { @@ -79,10 +80,8 @@ protected: return TestFail; } - delete thread; - /* Test waiting for completion with a timeout. */ - thread = new DelayThread(chrono::milliseconds(500)); + thread = std::make_unique<DelayThread>(chrono::milliseconds(500)); thread->start(); thread->exit(0); @@ -100,10 +99,8 @@ protected: return TestFail; } - delete thread; - /* Test waiting on a thread that isn't running. */ - thread = new Thread(); + thread = std::make_unique<Thread>(); timeout = !thread->wait(); if (timeout) { |