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
|
// assignment
|
||||||
inline bool Node::is(const Node& rhs) const
|
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>
|
template<typename T>
|
||||||
|
@@ -279,6 +279,13 @@ namespace Test
|
|||||||
YAML_ASSERT(!!node["foo"]);
|
YAML_ASSERT(!!node["foo"]);
|
||||||
return true;
|
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) {
|
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::TempMapVariableAlias, "temp map variable alias", passed, total);
|
||||||
RunNodeTest(&Node::Bool, "bool", passed, total);
|
RunNodeTest(&Node::Bool, "bool", passed, total);
|
||||||
RunNodeTest(&Node::AutoBoolConversion, "auto bool conversion", passed, total);
|
RunNodeTest(&Node::AutoBoolConversion, "auto bool conversion", passed, total);
|
||||||
|
RunNodeTest(&Node::Reassign, "reassign", passed, total);
|
||||||
|
|
||||||
std::cout << "Node tests: " << passed << "/" << total << " passed\n";
|
std::cout << "Node tests: " << passed << "/" << total << " passed\n";
|
||||||
return passed == total;
|
return passed == total;
|
||||||
|
Reference in New Issue
Block a user