fix some bugs that may cause segment fault or crash #17
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
pdg::TreeNode::TreeNode(const TreeNode &tree_node), but its _parent_node field remains uninitialized. While inexpandNode(), new_child_node will callcomputeDerivedAddrVarsFromParent(), in which may access root_node's parent_node throughgetParentNode(), while root_node's parent_node is still uninitialized, if its value is illegal, when use it as pointer, such asgrand_parent_node->getAddrVars(), there will be a segment fault.pdg::ProgramDependencyGraph::connectInterprocDependencies, for indirect calls, the number of nodes for caller's ret_actual_in_tree and callee's ret_formal_in_tree may unequal, which will causeassert(src->numOfChild() == dst->numOfChild());inpdg::ProgramDependencyGraph::connectInTreesfailed, so for each indirectCallCandidate, check the number of tree nodes before callconnectCallerAndCallee, only when callee's nodes equals to caller's nodes, callee can be indeed indirectCallCandidate