mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 20:51:16 +00:00
Fixed infinite loop bug having to do with simple keys when we hit an unexpected EOF.
This commit is contained in:
@@ -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
|
|||||||
// 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
|
|||||||
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
|
|||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,3 +1 @@
|
|||||||
- it's just
|
bad YAML: [
|
||||||
- one thing
|
|
||||||
- after another
|
|
Reference in New Issue
Block a user