File tree Expand file tree Collapse file tree 1 file changed +18
-5
lines changed
source/module_hamilt_general Expand file tree Collapse file tree 1 file changed +18
-5
lines changed Original file line number Diff line number Diff line change @@ -11,12 +11,25 @@ Operator<FPTYPE, Device>::~Operator()
1111{
1212 if (this ->hpsi != nullptr ) delete this ->hpsi ;
1313 Operator* last = this ->next_op ;
14- while (last != nullptr )
14+ Operator* last_sub = this ->next_sub_op ;
15+ while (last != nullptr || last_sub != nullptr )
1516 {
16- Operator* node_delete = last;
17- last = last->next_op ;
18- node_delete->next_op = nullptr ;
19- delete node_delete;
17+ if (last_sub != nullptr )
18+ {// delete sub_chain first
19+ Operator* node_delete = last_sub;
20+ last_sub = last_sub->next_sub_op ;
21+ node_delete->next_sub_op = nullptr ;
22+ delete node_delete;
23+ }
24+ else
25+ {// delete main chain if sub_chain is deleted
26+ Operator* node_delete = last;
27+ last_sub = last->next_sub_op ;
28+ node_delete->next_sub_op = nullptr ;
29+ last = last->next_op ;
30+ node_delete->next_op = nullptr ;
31+ delete node_delete;
32+ }
2033 }
2134}
2235
You can’t perform that action at this time.
0 commit comments