summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-04-11 20:12:40 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-04-12 22:16:56 +0300
commit05b80226010bef5d296ed8331a0582a6e045a4ae (patch)
tree85feaa29f9fc331852c50199fe0cd275066f3151
parent9b2544d3df481bc9dd0795fb645b544ba6484216 (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.cpp19
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) {