From 8a7befdcf7818bb124e615a14ef21f35447000cd Mon Sep 17 00:00:00 2001 From: Loren Segal Date: Wed, 8 Aug 2018 19:06:43 -0700 Subject: [PATCH] Fix StackOverflow for extremely large lists Avoid using Array#insert which causes StackOverflow on large sets. Fixes #1176 --- lib/yard/parser/ruby/ast_node.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/yard/parser/ruby/ast_node.rb b/lib/yard/parser/ruby/ast_node.rb index 123ac87db..d539ca309 100644 --- a/lib/yard/parser/ruby/ast_node.rb +++ b/lib/yard/parser/ruby/ast_node.rb @@ -207,9 +207,10 @@ def children # @return [void] def traverse nodes = [self] - nodes.each.with_index do |node, index| + until nodes.empty? + node = nodes.pop yield node - nodes.insert index + 1, *node.children + nodes += node.children.reverse unless node.children.empty? end end