mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 12:41:17 +00:00
Fixed assignment with an empty node (new API) - a segfault that only showed up in debuggable
This commit is contained in:
@@ -100,7 +100,9 @@ namespace YAML
|
||||
// assignment
|
||||
inline bool Node::is(const Node& rhs) const
|
||||
{
|
||||
return m_pNode ? m_pNode->is(*rhs.m_pNode) : false;
|
||||
if(!m_pNode || !rhs.m_pNode)
|
||||
return false;
|
||||
return m_pNode->is(*rhs.m_pNode);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
|
@@ -279,6 +279,13 @@ namespace Test
|
||||
YAML_ASSERT(!!node["foo"]);
|
||||
return true;
|
||||
}
|
||||
|
||||
TEST Reassign()
|
||||
{
|
||||
YAML::Node node = YAML::Load("foo");
|
||||
node = YAML::Node();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void RunNodeTest(TEST (*test)(), const std::string& name, int& passed, int& total) {
|
||||
@@ -324,6 +331,7 @@ namespace Test
|
||||
RunNodeTest(&Node::TempMapVariableAlias, "temp map variable alias", passed, total);
|
||||
RunNodeTest(&Node::Bool, "bool", passed, total);
|
||||
RunNodeTest(&Node::AutoBoolConversion, "auto bool conversion", passed, total);
|
||||
RunNodeTest(&Node::Reassign, "reassign", passed, total);
|
||||
|
||||
std::cout << "Node tests: " << passed << "/" << total << " passed\n";
|
||||
return passed == total;
|
||||
|
Reference in New Issue
Block a user