Commit 10a9df22 by Sam Skalicky Committed by Yizhi Liu

added error checking to loading symbol json (#2301)

parent 2a967044
...@@ -209,10 +209,12 @@ std::shared_ptr<Symbol> JSONGraph2Symbol(const JSONGraph &jgraph, bool no_parse) ...@@ -209,10 +209,12 @@ std::shared_ptr<Symbol> JSONGraph2Symbol(const JSONGraph &jgraph, bool no_parse)
for (const JSONNode &n : jgraph.nodes) { for (const JSONNode &n : jgraph.nodes) {
n.node->inputs.reserve(n.inputs.size()); n.node->inputs.reserve(n.inputs.size());
for (const JSONNode::Entry &e : n.inputs) { for (const JSONNode::Entry &e : n.inputs) {
CHECK(e.node_id < jgraph.nodes.size());
n.node->inputs.emplace_back(NodeEntry{jgraph.nodes[e.node_id].node, e.index, e.version}); n.node->inputs.emplace_back(NodeEntry{jgraph.nodes[e.node_id].node, e.index, e.version});
} }
n.node->control_deps.reserve(n.control_deps.size()); n.node->control_deps.reserve(n.control_deps.size());
for (uint32_t nid : n.control_deps) { for (uint32_t nid : n.control_deps) {
CHECK(nid < jgraph.nodes.size());
n.node->control_deps.push_back(jgraph.nodes[nid].node); n.node->control_deps.push_back(jgraph.nodes[nid].node);
} }
for (const JSONGraph &subgraph : n.subgraphs) { for (const JSONGraph &subgraph : n.subgraphs) {
...@@ -233,11 +235,13 @@ std::shared_ptr<Symbol> JSONGraph2Symbol(const JSONGraph &jgraph, bool no_parse) ...@@ -233,11 +235,13 @@ std::shared_ptr<Symbol> JSONGraph2Symbol(const JSONGraph &jgraph, bool no_parse)
} }
// consistency check // consistency check
for (uint32_t nid : jgraph.arg_nodes) { for (uint32_t nid : jgraph.arg_nodes) {
CHECK(nid < jgraph.nodes.size());
CHECK(jgraph.nodes[nid].node->is_variable()); CHECK(jgraph.nodes[nid].node->is_variable());
} }
std::shared_ptr<Symbol> symbol = std::make_shared<Symbol>(); std::shared_ptr<Symbol> symbol = std::make_shared<Symbol>();
symbol->outputs.reserve(jgraph.heads.size()); symbol->outputs.reserve(jgraph.heads.size());
for (const JSONNode::Entry &e : jgraph.heads) { for (const JSONNode::Entry &e : jgraph.heads) {
CHECK(e.node_id < jgraph.nodes.size());
symbol->outputs.emplace_back(NodeEntry{jgraph.nodes[e.node_id].node, e.index, e.version}); symbol->outputs.emplace_back(NodeEntry{jgraph.nodes[e.node_id].node, e.index, e.version});
} }
return symbol; return symbol;
......
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