[gxml] Fixed GomAttr children handling destruction issue



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]