From 34614eb94f33af6e0b5bbba6f9305645969269aa Mon Sep 17 00:00:00 2001 From: Dees_Troy Date: Fri, 5 Apr 2013 12:02:14 -0500 Subject: Improve handling of XML errors for fix permissions --- gui/gui.cpp | 3 ++- gui/rapidxml.hpp | 36 +++++++++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 10 deletions(-) (limited to 'gui') diff --git a/gui/gui.cpp b/gui/gui.cpp index 4c7bf5b23..87556891d 100644 --- a/gui/gui.cpp +++ b/gui/gui.cpp @@ -90,7 +90,8 @@ rapidxml::parse_error_handler (const char *what, void *where) { fprintf (stderr, "Parser error: %s\n", what); fprintf (stderr, " Start of string: %s\n", (char *) where); - abort (); + LOGERR("Error parsing XML file.\n"); + //abort (); } static void diff --git a/gui/rapidxml.hpp b/gui/rapidxml.hpp index d98173ecd..c0a7be44e 100644 --- a/gui/rapidxml.hpp +++ b/gui/rapidxml.hpp @@ -1745,8 +1745,10 @@ namespace rapidxml // Skip until end of declaration while (text[0] != Ch('?') || text[1] != Ch('>')) { - if (!text[0]) + if (!text[0]) { RAPIDXML_PARSE_ERROR("unexpected end of data", text); + return 0; + } ++text; } text += 2; // Skip '?>' @@ -1780,8 +1782,10 @@ namespace rapidxml // Skip until end of comment while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>')) { - if (!text[0]) + if (!text[0]) { RAPIDXML_PARSE_ERROR("unexpected end of data", text); + return 0; + } ++text; } text += 3; // Skip '-->' @@ -1794,8 +1798,10 @@ namespace rapidxml // Skip until end of comment while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>')) { - if (!text[0]) + if (!text[0]) { RAPIDXML_PARSE_ERROR("unexpected end of data", text); + return 0; + } ++text; } @@ -1837,7 +1843,7 @@ namespace rapidxml { case Ch('['): ++depth; break; case Ch(']'): --depth; break; - case 0: RAPIDXML_PARSE_ERROR("unexpected end of data", text); + case 0: RAPIDXML_PARSE_ERROR("unexpected end of data", text); return 0; } ++text; } @@ -1847,6 +1853,7 @@ namespace rapidxml // Error on end of text case Ch('\0'): RAPIDXML_PARSE_ERROR("unexpected end of data", text); + return 0; // Other character, skip it default: @@ -1903,8 +1910,10 @@ namespace rapidxml // Skip to '?>' while (text[0] != Ch('?') || text[1] != Ch('>')) { - if (*text == Ch('\0')) + if (*text == Ch('\0')) { RAPIDXML_PARSE_ERROR("unexpected end of data", text); + return 0; + } ++text; } @@ -1926,8 +1935,10 @@ namespace rapidxml // Skip to '?>' while (text[0] != Ch('?') || text[1] != Ch('>')) { - if (*text == Ch('\0')) + if (*text == Ch('\0')) { RAPIDXML_PARSE_ERROR("unexpected end of data", text); + return 0; + } ++text; } text += 2; // Skip '?>' @@ -2005,8 +2016,10 @@ namespace rapidxml // Skip until end of cdata while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>')) { - if (!text[0]) + if (!text[0]) { RAPIDXML_PARSE_ERROR("unexpected end of data", text); + return 0; + } ++text; } text += 3; // Skip ]]> @@ -2017,8 +2030,10 @@ namespace rapidxml Ch *value = text; while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>')) { - if (!text[0]) + if (!text[0]) { RAPIDXML_PARSE_ERROR("unexpected end of data", text); + return 0; + } ++text; } @@ -2154,8 +2169,10 @@ namespace rapidxml ++text; // Skip ! while (*text != Ch('>')) { - if (*text == 0) + if (*text == 0) { RAPIDXML_PARSE_ERROR("unexpected end of data", text); + return 0; + } ++text; } ++text; // Skip '>' @@ -2224,6 +2241,7 @@ namespace rapidxml // End of data - error case Ch('\0'): RAPIDXML_PARSE_ERROR("unexpected end of data", text); + return; // Data node default: -- cgit v1.2.3