From fe9620793f5a73f5daab3f8da7c439455eabb520 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Sun, 19 Apr 2015 21:45:39 +0200
Subject: [PATCH] check token order when composing in DEBUG only

---
 alib2data/src/sax/SaxComposeInterface.cpp | 32 +++++++++++++++--------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/alib2data/src/sax/SaxComposeInterface.cpp b/alib2data/src/sax/SaxComposeInterface.cpp
index bc27ecc1a3..cdcb51e3f8 100644
--- a/alib2data/src/sax/SaxComposeInterface.cpp
+++ b/alib2data/src/sax/SaxComposeInterface.cpp
@@ -52,18 +52,24 @@ void SaxComposeInterface::printStream(std::ostream& out, const std::deque<Token>
 
 void SaxComposeInterface::xmlSAXUserPrint(xmlTextWriterPtr writer, const std::deque<Token>& in) {
 	xmlTextWriterStartDocument(writer, NULL, NULL, NULL);
-	std::deque<Token> stack;
+	#ifdef DEBUG
+		std::deque<Token> stack;
+	#endif
 	for(const Token& token : in) {
 		switch(token.getType()) {
 		case Token::TokenType::START_ELEMENT:
 			xmlTextWriterStartElement(writer, (const xmlChar*) token.getData().c_str());
-			stack.push_back(token);
+			#ifdef DEBUG
+				stack.push_back(token);
+			#endif
 			break;
 		case Token::TokenType::END_ELEMENT:
-			if(stack.empty() || stack.back().getData() != token.getData() || stack.back().getType() != Token::TokenType::START_ELEMENT) {
-				throw ComposerException(Token(stack.back().getData(), Token::TokenType::END_ELEMENT), token);
-			}
-			stack.pop_back();
+			#ifdef DEBUG
+				if(stack.empty() || stack.back().getData() != token.getData() || stack.back().getType() != Token::TokenType::START_ELEMENT) {
+					throw ComposerException(Token(stack.back().getData(), Token::TokenType::END_ELEMENT), token);
+				}
+				stack.pop_back();
+			#endif
 			xmlTextWriterEndElement(writer);
 			break;
 		case Token::TokenType::CHARACTER:
@@ -71,13 +77,17 @@ void SaxComposeInterface::xmlSAXUserPrint(xmlTextWriterPtr writer, const std::de
 			break;
 		case Token::TokenType::START_ATTRIBUTE:
 			xmlTextWriterStartAttribute(writer, (const xmlChar*) token.getData().c_str());
-			stack.push_back(token);
+			#ifdef DEBUG
+				stack.push_back(token);
+			#endif
 			break;
 		case Token::TokenType::END_ATTRIBUTE:
-			if(stack.empty() || stack.back().getData() != token.getData() || stack.back().getType() != Token::TokenType::START_ATTRIBUTE) {
-				throw ComposerException(Token(stack.back().getData(), Token::TokenType::END_ATTRIBUTE), token);
-			}
-			stack.pop_back();
+			#ifdef DEBUG
+				if(stack.empty() || stack.back().getData() != token.getData() || stack.back().getType() != Token::TokenType::START_ATTRIBUTE) {
+					throw ComposerException(Token(stack.back().getData(), Token::TokenType::END_ATTRIBUTE), token);
+				}
+				stack.pop_back();
+			#endif
 			xmlTextWriterEndAttribute(writer);
 			break;
 		}
-- 
GitLab