[gxml] Fixed GomAttr children handling destruction issue
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml] Fixed GomAttr children handling destruction issue
- Date: Sat, 21 Jan 2017 03:24:41 +0000 (UTC)
commit 5d2481b97701fd5fb775f03c54949efc791ac720
Author: Daniel Espinosa <esodan gmail com>
Date: Fri Jan 20 14:16:41 2017 -0600
Fixed GomAttr children handling destruction issue
gxml/GomAttr.vala | 2 ++
gxml/XParser.vala | 19 +++++++++++--------
test/GomElementTest.vala | 1 -
test/GomSerializationTest.vala | 14 ++++++++------
4 files changed, 21 insertions(+), 15 deletions(-)
---
diff --git a/gxml/GomAttr.vala b/gxml/GomAttr.vala
index 02186da..97434e2 100644
--- a/gxml/GomAttr.vala
+++ b/gxml/GomAttr.vala
@@ -43,6 +43,8 @@ public class GXml.GomAttr : GXml.GomNode, GXml.DomAttr {
}
public string value { owned get { return _node_value; } set { _node_value = value; } }
+ construct { _child_nodes = null; }
+
public GomAttr (DomElement element, string name, string value) {
_document = element.owner_document;
_parent = element;
diff --git a/gxml/XParser.vala b/gxml/XParser.vala
index 91c4436..e8021b6 100644
--- a/gxml/XParser.vala
+++ b/gxml/XParser.vala
@@ -301,6 +301,7 @@ public class GXml.XParser : Object, GXml.Parser {
*/
public bool read_child_node (DomNode parent) throws GLib.Error {
DomNode n = null;
+ bool ret = true;
var t = tr.node_type ();
switch (t) {
case Xml.ReaderType.NONE:
@@ -360,19 +361,19 @@ public class GXml.XParser : Object, GXml.Parser {
#if DEBUG
GLib.message ("Type DOCUMENT");
#endif
- return false;
+ ret = false;
break;
case Xml.ReaderType.DOCUMENT_TYPE:
#if DEBUG
GLib.message ("Type DOCUMENT_TYPE");
#endif
- return false;
+ ret = false;
break;
case Xml.ReaderType.DOCUMENT_FRAGMENT:
#if DEBUG
GLib.message ("Type DOCUMENT_FRAGMENT");
#endif
- return false;
+ ret = false;
break;
case Xml.ReaderType.NOTATION:
#if DEBUG
@@ -399,23 +400,25 @@ public class GXml.XParser : Object, GXml.Parser {
#if DEBUG
GLib.message ("Type END_ELEMENT");
#endif
- return false;
+ ret = false;
+ break;
case Xml.ReaderType.END_ENTITY:
#if DEBUG
GLib.message ("Type END_ENTITY");
#endif
- return false;
+ ret = false;
+ break;
case Xml.ReaderType.XML_DECLARATION:
#if DEBUG
GLib.message ("Type XML_DECLARATION");
#endif
- return false;
+ ret = false;
break;
case Xml.ReaderType.ELEMENT:
- return false;
+ ret = false;
break;
}
- return true;
+ return ret;
}
/**
* Reads current found element
diff --git a/test/GomElementTest.vala b/test/GomElementTest.vala
index c302a49..64693b4 100644
--- a/test/GomElementTest.vala
+++ b/test/GomElementTest.vala
@@ -149,7 +149,6 @@ class GomElementTest : GXmlTest {
GLib.message (e.message);
assert_not_reached ();
}
- assert_not_reached ();
});
Test.add_func ("/gxml/gom-element/content/add_aside_child_nodes", () =>{
try {
diff --git a/test/GomSerializationTest.vala b/test/GomSerializationTest.vala
index e76bcc5..e06d10b 100644
--- a/test/GomSerializationTest.vala
+++ b/test/GomSerializationTest.vala
@@ -267,7 +267,7 @@ class GomSerializationTest : GXmlTest {
public string name { get; set; }
public Books books { get; set; }
construct {
- try { assert_not_reached (); initialize ("BookStore"); } catch { assert_not_reached (); }
+ try { initialize ("BookStore"); } catch { assert_not_reached (); }
}
public string to_string () {
var parser = new XParser (this);
@@ -561,11 +561,13 @@ class GomSerializationTest : GXmlTest {
});
Test.add_func ("/gxml/gom-serialization/read/bad-node-name", () => {
var b = new Book ();
- var parser = new XParser (b);
- try {
- parser.read_string ("<Chair name=\"Tall\"/>", null);
- assert_not_reached ();
- } catch {}
+ b.read_from_string ("<chair name=\"Tall\"/>");
+ GLib.message ("Book name ="+b.name);
+ assert (b.name == null);
+ assert (b.child_nodes.size == 1);
+ var n = b.child_nodes.item (0);
+ assert (n != null);
+ assert (n.node_name == "chair");
});
Test.add_func ("/gxml/gom-serialization/read/object-property", () => {
try {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]