From 27a89686b710bd5db9c02f7ec00f934196e93a06 Mon Sep 17 00:00:00 2001 From: allem Date: Fri, 13 Sep 2019 22:08:37 -0400 Subject: [PATCH] Revert "fix vector memory leak" This reverts commit 0787e2c1 --- cosets/src/tc.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/cosets/src/tc.cpp b/cosets/src/tc.cpp index 28eb419..12ca511 100644 --- a/cosets/src/tc.cpp +++ b/cosets/src/tc.cpp @@ -52,35 +52,34 @@ struct Table { } std::vector> words() { - std::vector> vecs(size()); - std::vector done_vecs(size()); - done_vecs[0] = true; - - bool done = false; - while (!done) { - done = true; + std::vector *> vecs(size()); + vecs[0] = new std::vector(); + while (std::find(vecs.begin(), vecs.end(), nullptr) != vecs.end()) { for (int from = 0; from < (int) vecs.size(); ++from) { - if (done_vecs[from]) { - done = false; + std::vector *word = vecs[from]; + if (word == nullptr) { continue; } - std::vector word = vecs[from]; for (int gen = 0; gen < (int) N; ++gen) { int to = get(from, gen); - if (done_vecs[to]) { + if (vecs[to] != nullptr) { continue; } - done_vecs[to] = true; - vecs[to].assign(word.size() + 1, gen); - std::copy(word.begin(), word.end(), vecs[to].begin()); + vecs[to] = new std::vector(*word); + vecs[to]->push_back(gen); } } } - return vecs; + std::vector> res(size()); + for (int i = 0; i < (int) size(); ++i) { + res[i] = *vecs[i]; + } + + return res; } };