diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/slang-generate/main.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/tools/slang-generate/main.cpp b/tools/slang-generate/main.cpp index 8e4824065..7d07cd613 100644 --- a/tools/slang-generate/main.cpp +++ b/tools/slang-generate/main.cpp @@ -56,8 +56,16 @@ struct SourceFile : public RefObject { if (text.begin()) free((void*)text.begin()); - if (node) + + // To avoid deep recursion in the Node destructor, + // we delete the first level of the node tree iteratively. + while (node) + { + Node* next = node->next; + node->next = nullptr; delete node; + node = next; + } } }; |
