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 {
89
89
std::vector<std::string> queue;
90
90
int queue_front = -1 ;
91
91
std::string& symengine_src;
92
+ std::unordered_set<std::string> variables_to_free;
92
93
93
94
SymEngineQueue (std::string& symengine_src) : symengine_src(symengine_src) {}
94
95
@@ -102,11 +103,13 @@ class SymEngineQueue {
102
103
symengine_src = indent + " basic " + var + " ;\n " ;
103
104
symengine_src += indent + " basic_new_stack(" + var + " );\n " ;
104
105
}
106
+ variables_to_free.insert (queue[queue_front]);
105
107
return queue[queue_front++];
106
108
}
107
109
108
110
void pop () {
109
111
LCOMPILERS_ASSERT (queue_front != -1 && queue_front < static_cast <int >(queue.size ()));
112
+ variables_to_free.insert (queue[queue_front]);
110
113
queue_front++;
111
114
}
112
115
};
@@ -783,6 +786,10 @@ R"(#include <stdio.h>
783
786
+ " ;\n " ;
784
787
}
785
788
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 ();
786
793
if (decl.size () > 0 || current_body.size () > 0 ) {
787
794
sub += " {\n " + decl + current_body + " }\n " ;
788
795
} else {
You can’t perform that action at this time.
0 commit comments