diff --git a/lib/nokogiri/xml/builder.rb b/lib/nokogiri/xml/builder.rb index 98bb075b72..80428f6d4f 100644 --- a/lib/nokogiri/xml/builder.rb +++ b/lib/nokogiri/xml/builder.rb @@ -425,15 +425,18 @@ def method_missing(method, *args, &block) # :nodoc: def insert(node, &block) node = @parent.add_child(node) if block - old_parent = @parent - @parent = node - @arity ||= block.arity - if @arity <= 0 - instance_eval(&block) - else - yield(self) + begin + old_parent = @parent + @parent = node + @arity ||= block.arity + if @arity <= 0 + instance_eval(&block) + else + yield(self) + end + ensure + @parent = old_parent end - @parent = old_parent end NodeBuilder.new(node, self) end