]> git.sesse.net Git - cubemap/blobdiff - main.cpp
Fix another minor leak.
[cubemap] / main.cpp
index be3e8ebcce8e81ca462c34937b3068cdc12e24b1..55548bae91e832c02450a2196bf9778cea39453f 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -32,6 +32,7 @@ using namespace std;
 
 AccessLogThread *access_log = NULL;
 ServerPool *servers = NULL;
 
 AccessLogThread *access_log = NULL;
 ServerPool *servers = NULL;
+vector<MarkPool *> mark_pools;
 volatile bool hupped = false;
 volatile bool stopped = false;
 
 volatile bool hupped = false;
 volatile bool stopped = false;
 
@@ -142,7 +143,6 @@ void create_streams(const Config &config,
                     const set<string> &deserialized_stream_ids,
                    map<string, Input *> *deserialized_inputs)
 {
                     const set<string> &deserialized_stream_ids,
                    map<string, Input *> *deserialized_inputs)
 {
-       vector<MarkPool *> mark_pools;  // FIXME: leak
        for (unsigned i = 0; i < config.mark_pools.size(); ++i) {
                const MarkPoolConfig &mp_config = config.mark_pools[i];
                mark_pools.push_back(new MarkPool(mp_config.from, mp_config.to));
        for (unsigned i = 0; i < config.mark_pools.size(); ++i) {
                const MarkPoolConfig &mp_config = config.mark_pools[i];
                mark_pools.push_back(new MarkPool(mp_config.from, mp_config.to));
@@ -406,6 +406,7 @@ start:
 
        if (stats_thread != NULL) {
                stats_thread->stop();
 
        if (stats_thread != NULL) {
                stats_thread->stop();
+               delete stats_thread;
        }
        for (size_t i = 0; i < acceptors.size(); ++i) {
                acceptors[i]->stop();
        }
        for (size_t i = 0; i < acceptors.size(); ++i) {
                acceptors[i]->stop();
@@ -430,6 +431,12 @@ start:
                }
        }
        delete servers;
                }
        }
        delete servers;
+
+       for (unsigned i = 0; i < mark_pools.size(); ++i) {
+               delete mark_pools[i];
+       }
+       mark_pools.clear();
+
        access_log->stop();
        delete access_log;
        shut_down_logging();
        access_log->stop();
        delete access_log;
        shut_down_logging();