Skip to content

Commit 6422fa3

Browse files
committedAug 17, 2024·
Use loop instead of recursive call for Element#root
It's for performance and avoiding stack level too deep.
1 parent 790ad5c commit 6422fa3

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed
 

‎lib/rexml/element.rb

+8-3
Original file line numberDiff line numberDiff line change
@@ -441,9 +441,14 @@ def root_node
441441
# Related: #root_node, #document.
442442
#
443443
def root
444-
return elements[1] if self.kind_of? Document
445-
return self if parent.kind_of? Document or parent.nil?
446-
return parent.root
444+
target = self
445+
while target
446+
return target.elements[1] if target.kind_of? Document
447+
parent = target.parent
448+
return target if parent.kind_of? Document or parent.nil?
449+
target = parent
450+
end
451+
nil
447452
end
448453

449454
# :call-seq:

0 commit comments

Comments
 (0)
Please sign in to comment.