Extract XML::Document from XML::Node #15920
Open
+131
−108
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Introduces the
XML::Document
type to wrap aLibXML::Doc*
, whileXML::Node
is meant to wrap the subtreeLibXML::Node*
.The
XML::Document
inherits fromXML::Node
and acts exactly like aXML::Node
, so it should hopefully be a transparent change (no breaking changes).The main advantage is that we now register a single finalizer instead of one for every node (only the document needed a finalizer).
Sadly, it doesn't allow to have a dual strong reference from a document to its nodes, and from the nodes to their document. Boehm GC still complains about cyclic finalization, despite only the document having a finalizer.
Follow up to #15906
Related to #15915