Clone in a terminal:
Commit e6b5ff0
Johan Mattsson - 2015-05-26T15:41:45+00:00
e6b5ff0c1e374c7de80b8dbe3c1d3027ed25dc5ejohan.mattsson.m@gmail.com

Report error if malloc fails

Changed files (2)

Diff

diff --git a/libbirdxml/Xml.vala b/libbirdxml/Xml.valaindex d67d589..80102a7 100644--- a/libbirdxml/Xml.vala+++ b/libbirdxml/Xml.vala@@ -69,11 +69,10 @@ internal const int WARNINGS = 1;  *   */ public class XmlParser : GLib.Object {-	public Tag root;-	public XmlData data;-	public string input;-	public bool error;-	public int refcount = 1;+	Tag root;+	XmlData data;+	string input;+	bool error; 	 	/**  	 * Create a new xml parser. @@ -81,7 +80,7 @@ public class XmlParser : GLib.Object { 	 */ 	public XmlParser (string data) { 		this.input = data;-		this.data = new XmlData (data, data.length);+		this.data = new XmlData (data, data.length);		 		reparse (NONE); 	} 		@@ -90,6 +89,11 @@ public class XmlParser : GLib.Object { 	 * @return true if the xml document is valid xml. 	 */ 	public bool validate () {+		if (this.data.error) {+			error = true;+			return false;+		} +		 		reparse (NONE);  		if (error) {diff --git a/libbirdxml/XmlData.vala b/libbirdxml/XmlData.valaindex bb59574..a3a693f 100644--- a/libbirdxml/XmlData.vala+++ b/libbirdxml/XmlData.vala@@ -19,6 +19,8 @@ public class XmlData : XmlString { 	int tags_capacity; 	int tags_size; 	+	internal bool error = false;+	 	public XmlData (char* data, int length) { 		base (data, length); @@ -92,8 +94,8 @@ public class XmlData : XmlString { 	bool increase_capacity () { 		int* tags; 		-		tags_capacity += 10;-		tags = (int*) new int [tags_capacity];+		tags_capacity += 512;+		tags = (int*) try_malloc (tags_capacity * sizeof (int)); 		 		if (tags == null) { 			tags_capacity = 0;@@ -101,6 +103,8 @@ public class XmlData : XmlString { 			if (start_tags != null) { 				delete start_tags; 				start_tags = null;+				tags_size = 0;+				error = true; 			} 			 			warning ("Can not allocate xml data buffer.");

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112