[gxml] XDocument: Fix memory leak
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml] XDocument: Fix memory leak
- Date: Wed, 17 Mar 2021 03:29:08 +0000 (UTC)
commit d2ace44f13f4189fd41221b9cd3af8688eb876a4
Author: Daniel Espinosa <esodan gmail com>
Date: Tue Mar 16 21:28:02 2021 -0600
XDocument: Fix memory leak
gxml/XDocument.vala | 7 +++++++
gxml/XNode.vala | 3 +--
2 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/gxml/XDocument.vala b/gxml/XDocument.vala
index a7d193a9..89c04230 100644
--- a/gxml/XDocument.vala
+++ b/gxml/XDocument.vala
@@ -41,6 +41,10 @@ public class GXml.XDocument : GXml.XNode,
protected Xml.Buffer _buffer;
protected Parser _parser = null;
+ ~XDocument () {
+ delete doc;
+ }
+
public XDocument () {
doc = new Xml.Doc ();
}
@@ -68,6 +72,9 @@ public class GXml.XDocument : GXml.XNode,
var parser = new XdParser (this);
parser.read_stream (istream);
}
+ /**
+ * Gigen {@link Xml.Doc} is owned by this
+ */
public XDocument.from_doc (Xml.Doc doc) { this.doc = doc; }
public Parser GXml.DomDocument.get_xml_parser () {
diff --git a/gxml/XNode.vala b/gxml/XNode.vala
index 4f1cae14..38a2654a 100644
--- a/gxml/XNode.vala
+++ b/gxml/XNode.vala
@@ -111,7 +111,7 @@ public abstract class GXml.XNode : GLib.Object,
case GXml.NodeType.COMMENT:
return new XComment (doc, node);
case GXml.NodeType.DOCUMENT:
- return new XDocument.from_doc (node->doc);
+ return doc;
case GXml.NodeType.DOCUMENT_TYPE:
return nullnode;
case GXml.NodeType.DOCUMENT_FRAGMENT:
@@ -197,7 +197,6 @@ public abstract class GXml.XNode : GLib.Object,
if (this is GXml.DomProcessingInstruction) return this.@value;
if (this is GXml.DomComment) return this.@value;
if (this is GXml.DomDocument || this is GXml.DomElement) {
- message ("Is Element");
foreach (GXml.DomNode n in children_nodes) {
if (n is GXml.DomText) {
if (t == null) t = ((XNode) n).value;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]