summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/slang-generate/main.cpp10
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;
+ }
}
};