"tests/vscode:/vscode.git/clone" did not exist on "c806f2fad6040d50b3d291076cab0195863ba328"
Commit 907be066 authored by Jesse Beder's avatar Jesse Beder
Browse files

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

parent 3ed09b89
...@@ -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