src/lib/INIReader.cpp
branchv_0
changeset 19 967f73af64a4
parent 16 db994a2ddffa
child 20 9187f0439ca9
--- a/src/lib/INIReader.cpp	Thu Nov 26 11:41:55 2020 +0100
+++ b/src/lib/INIReader.cpp	Thu Nov 26 17:08:49 2020 +0100
@@ -196,10 +196,10 @@
 
 		while (input.good()) { // TODO: condition
 			{
+				INIContentHandler::WhitespaceEvent event;
+				event.lineNumber = lineNumber;
 				std::string whitespace = readAllWhitespace();
 				if (whitespace.size()) {
-					INIContentHandler::WhitespaceEvent event;
-					event.lineNumber = lineNumber;
 					event.eventNumber = ++eventNumber;
 					event.whitespace = whitespace;
 					for (INIContentHandler* handler : handlers) handler->whitespace(event);
@@ -216,11 +216,11 @@
 			} else if (ch == '[') {
 				if (inSection) for (INIContentHandler* handler : handlers) handler->endSection();
 				inSection = true;
-				get();
-				readAllWhitespace();
 				INIContentHandler::SectionStartEvent event;
 				event.lineNumber = lineNumber;
 				event.eventNumber = ++eventNumber;
+				get();
+				readAllWhitespace();
 				event.name = readTokenAndEatTerminator(']', &quote, &found);
 
 				readSpacesAndTabs();
@@ -243,14 +243,18 @@
 
 				for (INIContentHandler* handler : handlers) handler->startSection(event);
 			} else if (isComment(ch)) {
-				get();
-				readSpacesAndTabs();
 				INIContentHandler::CommentEvent event;
 				event.lineNumber = lineNumber;
 				event.eventNumber = ++eventNumber;
+				get();
+				readSpacesAndTabs();
 				event.comment = readUntil('\n', &found);
 				for (INIContentHandler* handler : handlers) handler->comment(event);
 			} else {
+				INIContentHandler::EntryEvent event;
+				event.lineNumber = lineNumber;
+				event.eventNumber = ++eventNumber;
+
 				std::string fullKey = readToken('=', &quote, &found);
 				if (!found) throw std::logic_error(std::string("missing = after key: '") + fullKey + "'");
 				if (!quote) fullKey = trim(fullKey);
@@ -265,9 +269,6 @@
 				std::string value = readToken('\n', &quote, &found);
 				if (!quote) value = trim(value);
 
-				INIContentHandler::EntryEvent event;
-				event.lineNumber = lineNumber;
-				event.eventNumber = ++eventNumber;
 				event.key = fullKey;
 				event.fullKey = fullKey;
 				event.value = value;