Commit ecba08e2 authored by jbeder's avatar jbeder
Browse files

Fixed infinite loop bug having to do with simple keys when we hit an unexpected EOF.

parent d51888bc
...@@ -33,7 +33,7 @@ namespace YAML ...@@ -33,7 +33,7 @@ namespace YAML
// checking input // checking input
void InsertSimpleKey(); void InsertSimpleKey();
bool VerifySimpleKey(); bool VerifySimpleKey(bool force = false);
void VerifyAllSimpleKeys(); void VerifyAllSimpleKeys();
bool IsWhitespaceToBeEaten(char ch); bool IsWhitespaceToBeEaten(char ch);
......
...@@ -50,7 +50,8 @@ namespace YAML ...@@ -50,7 +50,8 @@ namespace YAML
// VerifySimpleKey // VerifySimpleKey
// . Determines whether the latest simple key to be added is valid, // . Determines whether the latest simple key to be added is valid,
// and if so, makes it valid. // and if so, makes it valid.
bool Scanner::VerifySimpleKey() // . If 'force' is true, then we'll pop no matter what (whether we can verify it or not).
bool Scanner::VerifySimpleKey(bool force)
{ {
m_isLastKeyValid = false; m_isLastKeyValid = false;
if(m_simpleKeys.empty()) if(m_simpleKeys.empty())
...@@ -60,8 +61,11 @@ namespace YAML ...@@ -60,8 +61,11 @@ namespace YAML
SimpleKey key = m_simpleKeys.top(); SimpleKey key = m_simpleKeys.top();
// only validate if we're in the correct flow level // only validate if we're in the correct flow level
if(key.flowLevel != m_flowLevel) if(key.flowLevel != m_flowLevel) {
if(force)
m_simpleKeys.pop();
return false; return false;
}
m_simpleKeys.pop(); m_simpleKeys.pop();
...@@ -94,9 +98,11 @@ namespace YAML ...@@ -94,9 +98,11 @@ namespace YAML
return isValid; return isValid;
} }
// VerifyAllSimplyKeys
// . Pops all simple keys (with checking, but if we can't verify one, then pop it anyways).
void Scanner::VerifyAllSimpleKeys() void Scanner::VerifyAllSimpleKeys()
{ {
while(!m_simpleKeys.empty()) while(!m_simpleKeys.empty())
VerifySimpleKey(); VerifySimpleKey(true);
} }
} }
- it's just bad YAML: [
- one thing \ No newline at end of file
- after another
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment