Fix leaked threads in client-server test.
authorCarl Hetherington <cth@carlh.net>
Fri, 26 May 2017 23:00:29 +0000 (00:00 +0100)
committerCarl Hetherington <cth@carlh.net>
Fri, 26 May 2017 23:00:29 +0000 (00:00 +0100)
test/client_server_test.cc

index fab9411abb2ff528692ce86aca756f85b2543a6f..f84a0cb58ae1210b975bc11821453b752154c2d5 100644 (file)
@@ -115,7 +115,7 @@ BOOST_AUTO_TEST_CASE (client_server_test_rgb)
 
        EncodeServer* server = new EncodeServer (log, true, 2);
 
-       new thread (boost::bind (&EncodeServer::run, server));
+       thread* server_thread = new thread (boost::bind (&EncodeServer::run, server));
 
        /* Let the server get itself ready */
        dcpomatic_sleep (1);
@@ -135,6 +135,9 @@ BOOST_AUTO_TEST_CASE (client_server_test_rgb)
                delete *i;
        }
 
+       server_thread->join ();
+       delete server_thread;
+
        delete server;
 }
 
@@ -194,7 +197,7 @@ BOOST_AUTO_TEST_CASE (client_server_test_yuv)
 
        EncodeServer* server = new EncodeServer (log, true, 2);
 
-       new thread (boost::bind (&EncodeServer::run, server));
+       thread* server_thread = new thread (boost::bind (&EncodeServer::run, server));
 
        /* Let the server get itself ready */
        dcpomatic_sleep (1);
@@ -214,6 +217,9 @@ BOOST_AUTO_TEST_CASE (client_server_test_yuv)
                delete *i;
        }
 
+       server_thread->join ();
+       delete server_thread;
+
        delete server;
 }
 
@@ -284,7 +290,7 @@ BOOST_AUTO_TEST_CASE (client_server_test_j2k)
 
        EncodeServer* server = new EncodeServer (log, true, 2);
 
-       new thread (boost::bind (&EncodeServer::run, server));
+       thread* server_thread = new thread (boost::bind (&EncodeServer::run, server));
 
        /* Let the server get itself ready */
        dcpomatic_sleep (1);
@@ -304,5 +310,8 @@ BOOST_AUTO_TEST_CASE (client_server_test_j2k)
                delete *i;
        }
 
+       server_thread->join ();
+       delete server_thread;
+
        delete server;
 }