File tree Expand file tree Collapse file tree 1 file changed +7
-0
lines changed
Expand file tree Collapse file tree 1 file changed +7
-0
lines changed Original file line number Diff line number Diff line change @@ -89,6 +89,7 @@ class SymEngineQueue {
8989 std::vector<std::string> queue;
9090 int queue_front = -1 ;
9191 std::string& symengine_src;
92+ std::unordered_set<std::string> variables_to_free;
9293
9394 SymEngineQueue (std::string& symengine_src) : symengine_src(symengine_src) {}
9495
@@ -102,11 +103,13 @@ class SymEngineQueue {
102103 symengine_src = indent + " basic " + var + " ;\n " ;
103104 symengine_src += indent + " basic_new_stack(" + var + " );\n " ;
104105 }
106+ variables_to_free.insert (queue[queue_front]);
105107 return queue[queue_front++];
106108 }
107109
108110 void pop () {
109111 LCOMPILERS_ASSERT (queue_front != -1 && queue_front < static_cast <int >(queue.size ()));
112+ variables_to_free.insert (queue[queue_front]);
110113 queue_front++;
111114 }
112115};
@@ -783,6 +786,10 @@ R"(#include <stdio.h>
783786 + " ;\n " ;
784787 }
785788
789+ for (const auto & var : symengine_queue.variables_to_free ) {
790+ current_body += indent + " basic_free_stack(" + var + " );\n " ;
791+ }
792+ symengine_queue.variables_to_free .clear ();
786793 if (decl.size () > 0 || current_body.size () > 0 ) {
787794 sub += " {\n " + decl + current_body + " }\n " ;
788795 } else {
You can’t perform that action at this time.
0 commit comments